summaryrefslogtreecommitdiffstats
path: root/tmac/groff_ms.7.man
diff options
context:
space:
mode:
Diffstat (limited to 'tmac/groff_ms.7.man')
-rw-r--r--tmac/groff_ms.7.man2906
1 files changed, 2906 insertions, 0 deletions
diff --git a/tmac/groff_ms.7.man b/tmac/groff_ms.7.man
new file mode 100644
index 0000000..5d154f8
--- /dev/null
+++ b/tmac/groff_ms.7.man
@@ -0,0 +1,2906 @@
+'\" t
+.TH groff_ms @MAN7EXT@ "@MDATE@" "groff @VERSION@"
+.SH Name
+groff_ms \- GNU
+.I roff
+manuscript macro package for formatting documents
+.
+.
+.\" ====================================================================
+.\" Legal Terms
+.\" ====================================================================
+.\"
+.\" Copyright (C) 1989-2023 Free Software Foundation, Inc.
+.\"
+.\" Permission is granted to make and distribute verbatim copies of this
+.\" manual provided the copyright notice and this permission notice are
+.\" preserved on all copies.
+.\"
+.\" Permission is granted to copy and distribute modified versions of
+.\" this manual under the conditions for verbatim copying, provided that
+.\" the entire resulting derived work is distributed under the terms of
+.\" a permission notice identical to this one.
+.\"
+.\" Permission is granted to copy and distribute translations of this
+.\" manual into another language, under the above conditions for
+.\" modified versions, except that this permission notice may be
+.\" included in translations approved by the Free Software Foundation
+.\" instead of in the original English.
+.
+.
+.\" Save and disable compatibility mode (for, e.g., Solaris 10/11).
+.do nr *groff_groff_ms_7_man_C \n[.cp]
+.cp 0
+.
+.\" Define fallback for groff 1.23's MR macro if the system lacks it.
+.nr do-fallback 0
+.if !\n(.f .nr do-fallback 1 \" mandoc
+.if \n(.g .if !d MR .nr do-fallback 1 \" older groff
+.if !\n(.g .nr do-fallback 1 \" non-groff *roff
+.if \n[do-fallback] \{\
+. de MR
+. ie \\n(.$=1 \
+. I \%\\$1
+. el \
+. IR \%\\$1 (\\$2)\\$3
+. .
+.\}
+.rr do-fallback
+.
+.
+.\" ====================================================================
+.SH Synopsis
+.\" ====================================================================
+.
+.SY "groff \-m@TMAC_S_PREFIX@s"
+.RI [ option\~ .\|.\|.\&]
+.RI [ file\~ .\|.\|.]
+.
+.SY "groff \-m m@TMAC_S_PREFIX@s"
+.RI [ option\~ .\|.\|.\&]
+.RI [ file\~ .\|.\|.]
+.YS
+.
+.
+.\" ====================================================================
+.SH Description
+.\" ====================================================================
+.
+The GNU implementation of the
+.I ms
+macro package is part of the
+.I groff
+document formatting system.
+.
+The
+.I ms
+package is suitable for the composition of
+letters,
+memoranda,
+reports,
+and books.
+.
+.
+.LP
+These
+.I groff
+macros support 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
+.MR @g@tbl @MAN1EXT@ ,
+.MR @g@eqn @MAN1EXT@ ,
+.MR @g@pic @MAN1EXT@ ,
+and
+.MR @g@refer @MAN1EXT@
+preprocessors for inclusion of tables,
+mathematical equations,
+diagrams,
+and standardized bibliographic citations.
+.
+.
+.LP
+This implementation is mostly compatible with the documented interface
+and behavior of AT&T Unix Version\~7
+.IR ms .
+.
+Many extensions from 4.2BSD (Berkeley)
+.\" Few changes were made in 4.3, Reno, Tahoe, or 4.4.
+and Tenth Edition Research Unix have been recreated.
+.
+.
+.\" ====================================================================
+.SH Usage
+.\" ====================================================================
+.
+The
+.I ms
+macro package expects a certain amount of structure:
+a well-formed document contains at least one paragraphing or heading
+macro call.
+.
+.\" This sentence is unique to the man page because we omit the "Basic
+.\" information" section from ms.ms.
+To compose a simple document from scratch,
+begin it by calling
+.B .LP
+or
+.BR .PP .
+.
+Longer documents have a structure as follows.
+.
+.
+.TP
+.B Document type
+Calling the
+.B RP
+macro at the beginning of your document puts the document description
+(see below)
+on a cover page.
+.
+Otherwise,
+.I ms
+places this information
+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 in
+.IR "groff ms" .
+.
+.
+.TP
+.B "Format and layout"
+By setting registers and strings,
+you can configure your document's typeface,
+margins,
+spacing,
+headers and footers,
+and footnote arrangement.
+.
+See subsection \[lq]Document control settings\[rq] below.
+.
+.
+.TP
+.B 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.
+.
+See subsection \[lq]Document description macros\[rq] below.
+.
+.
+.TP
+.B Body text
+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.
+.
+The preponderance of subsections below covers these matters.
+.
+.
+.TP
+.B "Table 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
+.I troff \" GNU
+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.
+.
+.
+.\" ====================================================================
+.SS "Document control settings"
+.\" ====================================================================
+.
+The following tables list the document control registers,
+strings,
+and special characters.
+.
+For any parameter whose default is unsatisfactory,
+define it before calling any
+.I ms
+macro other than
+.BR RP .
+.
+.
+.LP
+.ne 7v
+.TS
+cb s s s
+cb cb cb cb
+lf(CR) lx l lf(CR).
+Margin settings
+Parameter Definition Effective Default
+_
+\[rs]n[PO] Page offset (left margin) next page 1i (0)
+\[rs]n[LL] Line length next paragraph 6.5i (65n)
+\[rs]n[LT] Title line length next paragraph 6.5i (65n)
+\[rs]n[HM] Top (header) margin next page 1i
+\[rs]n[FM] Bottom (footer) margin next page 1i
+_
+.TE
+.
+.
+.LP
+.ne 8v
+.TS
+cb s s s
+cb cb cb cb
+lf(CR) lx l lf(CR).
+Titles (headers, footers)
+Parameter Definition Effective Default
+_
+\[rs]*[LH] Left header text next header \f[I]empty
+\[rs]*[CH] Center header text next header \-\[rs]n[%]\-
+\[rs]*[RH] Right header text next header \f[I]empty
+\[rs]*[LF] Left footer text next footer \f[I]empty
+\[rs]*[CF] Center footer text next footer \f[I]empty
+\[rs]*[RF] Right footer text next footer \f[I]empty
+_
+.TE
+.
+.
+.LP
+.ne 6v
+.TS
+cb s s s
+cb cb cb cb
+lf(CR) lx l lf(CR).
+Text settings
+Parameter Definition Effective Default
+_
+\[rs]n[PS] Point size next paragraph 10p
+\[rs]n[VS] Vertical spacing (leading) next paragraph 12p
+\[rs]n[HY] Hyphenation mode next paragraph 6
+\[rs]*[FAM] Font family next paragraph T
+_
+.TE
+.
+.
+.LP
+.ne 6v
+.TS
+cb s s s
+cb cb cb cb
+lf(CR)2 lx l lf(CR).
+Paragraph settings
+Parameter Definition Effective Default
+_
+\[rs]n[PI] Indentation next paragraph 5n
+\[rs]n[PD] Paragraph distance (spacing) next paragraph 0.3v\
+ \f[R](\f[]1v\f[R])
+\[rs]n[QI] Quotation indentation next paragraph 5n
+\[rs]n[PORPHANS] # of initial lines kept next paragraph 1
+_
+.TE
+.
+.
+.ne 10v \" Keep table and subsequent paragraph together.
+.LP
+.TS
+cb s s s
+cb cb cb cb
+lf(CR) lx l lf(CR).
+Heading settings
+Parameter Definition Effective Default
+_
+\[rs]n[PSINCR] Point size increment next heading 1p
+\[rs]n[GROWPS] Size increase depth limit next heading 0
+\[rs]n[HORPHANS] # of following lines kept next heading 1
+\[rs]*[SN\-STYLE] Numbering style (alias) next heading \[rs]*[SN\-DOT]
+_
+.TE
+.
+.
+.LP
+.B \[rs]*[SN\-STYLE]
+can alternatively be made an alias of
+.B \[rs]*[SN\-NO\-DOT]
+with the
+.B als
+request.
+.
+.
+.LP
+.ne 8v
+.TS
+cb s s s
+cb cb cb cb
+lf(CR) lx l lf(CR).
+Footnote settings
+Parameter Definition Effective Default
+_
+\[rs]n[FI] Indentation next footnote 2n
+\[rs]n[FF] Format next footnote 0
+\[rs]n[FPS] Point size next footnote \[rs]n[PS]\-2p
+\[rs]n[FVS] Vertical spacing (leading) next footnote \[rs]n[FPS]+2p
+\[rs]n[FPD] Paragraph distance (spacing) next footnote \[rs]n[PD]/2
+\[rs]*[FR] Line length ratio \f[I]special 11/12
+_
+.TE
+.
+.
+.LP
+.ne 4v
+.TS
+cb s s s
+cb cb cb cb
+lf(CR) lx l lf(CR).
+Display settings
+Parameter Definition Effective Default
+_
+\[rs]n[DD] Display distance (spacing) \f[I]special 0.5v\
+ \f[R](\f[]1v\f[R])
+\[rs]n[DI] Display indentation \f[I]special 0.5i
+_
+.TE
+.
+.
+.LP
+.ne 3v
+.TS
+cb s s s
+cb cb cb cb
+lf(CR) lx l lf(CR).
+Other settings
+Parameter Definition Effective Default
+_
+\[rs]n[MINGW] Minimum gutter width next page 2n
+\[rs]n[TC\-MARGIN] TOC page number margin width \
+next \f[B]PX\f[] call \[rs]w\[aq]000\[aq]
+\[rs][TC\-LEADER] TOC leader character next \f[B]PX\f[] call\
+ .\[rs]h\[aq]1m\[aq]
+_
+.TE
+.
+.
+.LP
+For entries marked
+.RI \[lq] special \[rq]
+in the \[lq]Effective\[rq] column,
+see the discussion in the applicable section below.
+.
+The
+.BR PO ,
+.BR LL ,
+and
+.B LT
+register 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
+.MR groff @MAN1EXT@ .
+.
+The
+.B PD
+and
+.B 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.
+.
+The \[lq]gutter\[rq] affected by
+.B \[rs]n[MINGW]
+is the gap between columns in multiple-column page arrangements.
+.
+The
+.B TC\-MARGIN
+register and
+.B TC\-LEADER
+special character affect the formatting of tables of contents assembled
+by the
+.BR XS ,
+.BR XA ,
+and
+.B XE
+macros.
+.
+.
+.\" ====================================================================
+.SS "Document description macros"
+.\" ====================================================================
+.
+Define information describing the document by calling the macros below
+in the order shown;
+.B .DA
+or
+.B .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
+.B .TL
+is mandatory if any of
+.BR .RP ,
+.BR .AU ,
+.BR .AI ,
+or
+.B .AB
+is called,
+and
+.B .AE
+is mandatory if
+.B .AB
+is called.
+.
+.
+.TP
+.BR .RP\~ [ no\-repeat\-info ]\~[ no\-renumber ]
+Use the \[lq]report\[rq]
+(AT&T: \[lq]released paper\[rq])
+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
+.B no\-\:\%repeat\-\:\%info
+argument is given,
+.I ms
+produces a cover page but does not repeat any of its information on
+subsequently
+(but see the
+.B DA
+macro below regarding the date).
+.
+Normally,
+.B .RP
+sets the page number following the cover page to\~1.
+.
+Specifying the optional
+.B no\-\:\%renumber
+argument suppresses this alteration.
+.
+Optional arguments can occur in any order.
+.
+.RB \[lq] no \[rq]
+is recognized as a synonym of
+.B no\-\:\%repeat\-\:\%info
+for AT&T compatibility.
+.
+.
+.TP
+.B .TL
+Specify the document title.
+.
+.I ms
+collects text on input lines following this call into the title until
+reaching
+.BR .AU ,
+.BR .AB ,
+or a heading or paragraphing macro call.
+.
+.
+.TP
+.B .AU
+Specify an author's name.
+.
+.I ms
+collects text on input lines following this call into the author's name
+until reaching
+.BR .AI ,
+.BR .AB ,
+another
+.BR .AU ,
+or a heading or paragraphing macro call.
+.
+Call it repeatedly to specify multiple authors.
+.
+.
+.TP
+.B .AI
+Specify the preceding author's institution.
+.
+An
+.B .AU
+call is usefully followed by at most one
+.B .AI
+call;
+if there are more,
+the last
+.B .AI
+call controls.
+.
+.I ms
+collects text on input lines following this call into the author's
+institution until reaching
+.BR .AU ,
+.BR .AB ,
+or a heading or paragraphing macro call.
+.
+.
+.TP
+.BR .DA \~[\c
+.IR x \~.\|.\|.]
+Typeset the current date,
+or any
+.RI arguments\~ x ,
+in the center footer,
+and,
+if
+.B .RP
+is also called,
+left-aligned at the end of the document description on the cover page.
+.
+.
+.TP
+.BR .ND \~[\c
+.IR x \~.\|.\|.]
+Typeset the current date,
+or any
+.RI arguments\~ x ,
+if
+.B .RP
+is also called,
+left-aligned at the end of the document description on the cover page.
+.
+This is
+.IR "groff ms" 's
+default.
+.
+.
+.TP
+.BR ".AB " [ no ]
+Begin the abstract.
+.
+.I ms
+collects text on input lines following this call into the abstract until
+reaching an
+.B .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
+.RB \[lq] no \[rq]
+suppresses this heading.
+.
+.
+.TP
+.B .AE
+End the abstract.
+.
+.
+.\" ====================================================================
+.SS "Text settings"
+.\" ====================================================================
+.
+The
+.B FAM
+string,
+a GNU extension,
+sets the font family for body text;
+the default is
+.RB \[lq] T \[rq].
+.
+The
+.B PS
+and
+.B 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
+.BR FAM )
+footnotes.
+.
+.
+.br
+.ne 2v
+.P
+The
+.B HY
+register defines the automatic hyphenation mode used with the
+.B hy
+request.
+.
+Setting
+.B \[rs]n[HY]
+.RB to\~ 0
+is equivalent to using the
+.B nh
+request.
+.
+This is a Tenth Edition Research Unix extension.
+.
+.
+.\" ====================================================================
+.SS "Typographical symbols"
+.\" ====================================================================
+.
+.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\[em]see
+.MR groff_char @MAN7EXT@ .
+.
+.
+.TP
+.B \[rs]*[\-]
+Interpolate an em dash.
+.
+.
+.TP
+.B \[rs]*[Q]
+.TQ
+.B \[rs]*[U]
+Interpolate typographer's quotation marks where available,
+and neutral double quotes otherwise.
+.
+.B \[rs]*[Q]
+is the left quote and
+.B \[rs]*[U]
+the right.
+.
+.
+.\" ====================================================================
+.SS Paragraphs
+.\" ====================================================================
+.
+Paragraphing macros
+.IR 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
+.B PD
+register,
+except at page or column breaks,
+or adjacent to displays.
+.
+.
+.PP
+The
+.B 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
+.B \[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.
+.
+.
+.TP
+.B .LP
+Set a paragraph without any (additional) indentation.
+.
+.
+.TP
+.B .PP
+Set a paragraph with a first-line left indentation in the amount stored
+in the
+.B PI
+register.
+.
+.
+.TP
+.BR .IP \~[\c
+.IR marker \~[ width ]]
+Set a paragraph with a left indentation.
+.
+The optional
+.I marker
+is not indented and is empty by default.
+.
+.I width
+overrides the indentation amount in
+.BR \[rs]n[PI] ;
+its default unit is
+.RB \[lq] n \[rq].
+.
+Once specified,
+.I width
+applies to further
+.B .IP
+calls until specified again or a heading or different paragraphing macro
+is called.
+.
+.
+.TP
+.B .QP
+Set a paragraph indented from both left and right margins by
+.BR \[rs]n[QI] .
+.
+.
+.TP
+.B .QS
+.TQ
+.B .QE
+Begin
+.RB ( QS )
+and end
+.RB ( QE )
+a region where each paragraph is indented from both margins by
+.BR \[rs]n[QI] .
+.
+The text between
+.B .QS
+and
+.B .QE
+can be structured further by use of other paragraphing macros.
+.
+.
+.TP
+.B .XP
+Set an \[lq]exdented\[rq] paragraph\[em]one with a left indentation of
+.B \[rs]n[PI]
+on every line
+.I except
+the first
+(also known as a hanging indent).
+.
+This is a Berkeley extension.
+.
+.
+.\" ====================================================================
+.SS Headings
+.\" ====================================================================
+.
+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.
+.
+.
+.TP
+.BR .NH \~[\c
+.IR depth ]
+Set an automatically numbered heading.
+.
+.I ms
+produces a numbered heading in the form
+.IR a . b . c .\|.\|.,
+to any level desired,
+with the numbering of each depth increasing automatically and being
+reset to zero when a more significant depth is increased.
+.
+.RB \[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
+.BR 1 .
+.
+If you specify
+.I depth
+such that an ascending gap occurs relative to the previous
+.B NH
+call\[em]that is,
+you \[lq]skip a depth\[rq],
+as by
+.RB \[lq] ".NH\~1" \[rq]
+and then
+.RB \[lq] ".NH\~3" \[rq],
+.I groff ms
+emits a warning on the standard error stream.
+.
+.
+.TP
+.BI ".NH S\~" heading-depth-index\~\c
+\&.\|.\|.
+Alternatively,
+you can give
+.B NH
+a first argument
+.RB of\~\[lq] S \[rq],
+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.
+.
+.
+.P
+After
+.B .NH
+is called,
+the assigned number is made available in the strings
+.B SN\-DOT
+(as it appears in a printed heading with default formatting,
+followed by a terminating period)
+and
+.B SN\-NO\-DOT
+(with the terminating period omitted).
+.
+These are GNU extensions.
+.
+.
+.P
+You can control the style used to print numbered headings by defining an
+appropriate alias for the string
+.BR SN\-STYLE .
+.
+By default,
+.B \[rs]*[SN\-STYLE]
+is aliased to
+.BR \[rs]*[SN\-DOT] .
+.
+If you prefer to omit the terminating period from numbers appearing in
+numbered headings,
+you may alias it to
+.BR \[rs]*[SN\-NO\-DOT] .
+.
+Any such change in numbering style becomes effective from the next use
+of
+.B .NH
+following redefinition of the alias for
+.BR \[rs]*[SN\-STYLE] .
+.
+The formatted number of the current heading is available in
+.B \[rs]*[SN]
+(a feature first documented by Berkeley);
+this string facilitates its inclusion in,
+for example,
+table captions,
+equation labels,
+and
+.BR .XS / .XA / .XE
+table of contents entries.
+.
+.
+.TP
+.BR .SH \~[\c
+.IR depth ]
+Set an unnumbered heading.
+.
+The optional
+.I depth
+argument is a GNU extension indicating the heading depth corresponding
+to the
+.I depth
+argument of
+.BR .NH .
+.
+It matches the type size at which the heading is set to that of a
+numbered heading at the same depth when the
+.B \[rs]n[GROWPS]
+and
+.B \[rs]n[PSINCR]
+heading size adjustment mechanism is in effect.
+.
+.
+.P
+The
+.B PSINCR
+register defines an increment in type size to be applied to a heading at
+a lesser depth than that specified in
+.BR \[rs]n[GROWPS] .
+.
+The value of
+.B \[rs]n[PSINCR]
+should be specified in points with the
+.RB \[lq] p \[rq]
+scaling unit and may include a fractional component.
+.
+.
+.P
+The
+.B GROWPS
+register defines the heading depth above which the type size increment
+set by
+.B \[rs]n[PSINCR]
+becomes effective.
+.
+For each heading depth less than the value of
+.BR \[rs]n[GROWPS] ,
+the type size is increased by
+.BR \[rs]n[PSINCR] .
+.
+Setting
+.B \[rs]n[GROWPS]
+to a value less than\~2 disables the incremental heading size feature.
+.
+.
+.P
+In other words,
+if the value of
+.B GROWPS
+register is greater than the
+.I depth
+argument to a
+.B .NH
+or
+.B .SH
+call,
+the type size of a heading produced by these macros increases by
+.B \[rs]n[PSINCR]
+units over
+.B \[rs]n[PS]
+multiplied by the difference of
+.B \[rs]n[GROWPS]
+and
+.IR depth .
+.
+.
+.P
+The
+.B \[rs]n[HORPHANS]
+register operates in conjunction with the
+.B NH
+and
+.B 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
+.IR tbl ,
+.IR pic ,
+or
+.I eqn
+region between the heading and the subsequent paragraph suppresses this
+grouping.
+.
+.
+.\" ====================================================================
+.SS "Typeface and decoration"
+.\" ====================================================================
+.
+.
+.P
+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.
+.
+.
+.TP
+.BR .B \~[\c
+.IR text \~[ post \~[ pre ]]]
+Style
+.I text
+in 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.
+.
+.
+.TP
+.BR .R \~[\c
+.IR text \~[ post \~[ pre ]]]
+As
+.BR .B ,
+but use the roman style
+(upright text of normal weight)
+instead of bold.
+.
+Argument recognition is a GNU extension.
+.
+.
+.TP
+.BR .I \~[\c
+.IR text \~[ post \~[ pre ]]]
+As
+.BR .B ,
+but use an italic or oblique style instead of bold.
+.
+.
+.TP
+.BR .BI \~[\c
+.IR text \~[ post \~[ pre ]]]
+As
+.BR .B ,
+but use a bold italic or bold oblique style instead of upright bold.
+.
+This is a Tenth Edition Research Unix extension.
+.\" possibly 9th, but definitely not Berkeley
+.
+.
+.TP
+.BR .CW \~[\c
+.IR text \~[ post \~[ pre ]]]
+As
+.BR .B ,
+but use a constant-width (monospaced) roman typeface instead of bold.
+.
+This is a Tenth Edition Research Unix extension.
+.\" possibly 9th, but definitely not Berkeley
+.
+.
+.TP
+.BR .BX \~[\c
+.IR text ]
+Typeset
+.I text
+and draw a box around it.
+.
+On terminal devices,
+reverse video is used instead.
+.
+If you want
+.I text
+to contain space,
+use unbreakable space or horizontal motion escape sequences
+.RB ( \[rs]\[ti] ,
+.BI \[rs] space\c
+,
+.BR \[rs]\[ha] ,
+.BR \[rs]| ,
+.BR \[rs]0 ,
+or
+.BR \[rs]h ).
+.
+.
+.TP
+.BR .UL \~[\c
+.IR text \~[ post ]]
+Typeset
+.I text
+with an underline.
+.
+.I post,
+if present,
+is set after
+.I text
+with no intervening space.
+.
+.
+.TP
+.B .LG
+Set subsequent text in larger type
+(2\~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.
+.
+.
+.TP
+.B .SM
+Set subsequent text in smaller type
+(2\~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.
+.
+.
+.TP
+.B .NL
+Set subsequent text at the normal type size
+.RB ( \[rs]n[PS] ).
+.
+.
+.P
+When
+.I pre
+is used,
+a hyphenation control escape sequence
+.B \[rs]%
+that would ordinarily start
+.I text
+must start
+.I pre
+instead.
+.
+.
+.P
+.I groff ms
+also offers strings to begin and end super- and subscripting.
+.
+These are GNU extensions.
+.
+.
+.TP
+.B \[rs]*{
+.TQ
+.B \[rs]*}
+Begin and end superscripting,
+respectively.
+.
+.
+.TP
+.B \[rs]*<
+.TQ
+.B \[rs]*>
+Begin and end subscripting,
+respectively.
+.
+.
+.\" ====================================================================
+.SS "Indented regions"
+.\" ====================================================================
+.
+You may need to indent a region of text while otherwise formatting it
+normally.
+.
+Indented regions can be nested.
+.
+.
+.TP
+.B .RS
+Begin a region where headings,
+paragraphs,
+and displays are indented (further) by
+.BR \[rs]n[PI] .
+.
+.
+.TP
+.B .RE
+End the (next) most recent indented region.
+.
+.
+.\" ====================================================================
+.SS "Keeps, boxed keeps, and displays"
+.\" ====================================================================
+.
+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.
+.
+.
+.P
+You can alternatively specify a
+.I floating keep:
+if a keep cannot fit on the current page,
+.I ms
+holds its contents and allows text following the keep
+(in the source document)
+to fill in the remainder of the current page.
+.
+When the page breaks,
+whether by reaching the end or
+.B bp
+request,
+.I ms
+puts the floating keep at the beginning of the next page.
+.
+.
+.TP
+.B .KS
+Begin a keep.
+.
+.
+.TP
+.B .KF
+Begin a floating keep.
+.
+.
+.TP
+.B .KE
+End (floating) keep.
+.
+.
+.P
+As an alternative to the keep mechanism,
+the
+.B 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.
+.
+.
+.PP
+A
+.I boxed keep
+has a frame drawn around it.
+.
+.
+.TP
+.B .B1
+Begin a keep with a box drawn around it.
+.
+.
+.TP
+.B .B2
+End boxed keep.
+.
+.
+.P
+Boxed keep macros cause breaks;
+if you need to box a word or phrase within a line,
+see the
+.B BX
+macro in section \[lq]Highlighting\[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
+.B .B1
+after the first paragraphing macro,
+and by adding a small amount of vertical space before calling
+.BR .B2 .
+.
+.
+.br
+.ne 2v
+.P
+If you want a boxed keep to float,
+you will need to enclose the
+.B .B1
+and
+.B .B2
+calls within a pair of
+.B .KF
+and
+.B .KE
+calls.
+.
+.
+.P
+.I Displays
+turn off filling;
+lines of verse or program code are shown with their lines broken as in
+the source document without requiring
+.B br
+requests between lines.
+.
+Displays can be kept on a single page or allowed to break across pages.
+.
+The
+.B 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.
+.
+.
+.TP
+.B .DS L
+.TQ
+.B .LD
+Begin
+.RB ( DS ": kept)"
+left-aligned display.
+.
+.
+.TP
+.BR .DS \~\c
+.RB [ I \~\c
+.RI [ indent ]]
+.TQ
+.BR .ID \~\c
+.RI [ indent ]
+Begin
+.RB ( DS ": kept)"
+display indented by
+.I indent
+if specified,
+.B \[rs]n[DI]
+otherwise.
+.
+.
+.TP
+.B .DS B
+.TQ
+.B .BD
+Begin
+.RB ( DS ": kept)"
+block display:
+the entire display is left-aligned,
+but indented such that the longest line in the display is centered on
+the page.
+.
+.
+.TP
+.B .DS C
+.TQ
+.B .CD
+Begin
+.RB ( DS ": kept)"
+centered display:
+each line in the display is centered.
+.
+.
+.TP
+.B .DS R
+.TQ
+.B .RD
+Begin
+.RB ( DS ": kept)"
+right-aligned display.
+.
+This is a GNU extension.
+.
+.
+.TP
+.B .DE
+End any display.
+.
+.
+.P
+The distance stored in
+.B \[rs]n[DD]
+is inserted before and after each pair of display macros;
+this is a Berkeley extension.
+.
+In
+.IR "groff ms" ,
+this distance replaces any adjacent inter-paragraph distance
+or subsequent spacing prior to a section heading.
+.
+The
+.B DI
+register is a GNU extension;
+its value is an indentation applied to displays created with
+.B .DS
+and
+.B .ID
+without arguments,
+to
+.RB \[lq] .DS\~I \[rq]
+without an indentation argument,
+and to equations set with
+.RB \[lq] .EQ\~I \[rq].
+.
+Changes to either register take effect at the next display boundary.
+.
+.
+.\" ====================================================================
+.SS "Tables, figures, equations, and references"
+.\" ====================================================================
+.
+The
+.I ms
+package is often used with the
+.IR @g@tbl ,
+.IR @g@pic ,
+.IR @g@eqn ,
+and
+.I @g@refer
+preprocessors.
+.
+The
+.B \[rs]n[DD]
+distance is also applied to regions of the document preprocessed with
+.IR @g@eqn ,
+.IR @g@pic ,
+and
+.IR @g@tbl .
+.
+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.
+.
+.
+.TP
+.BR .TS " [" H "]
+.TQ
+.B .TE
+Demarcate a table to be processed by the
+.I tbl
+preprocessor.
+.
+The optional
+.BR H "\~argument"
+instructs
+.I ms
+to repeat table rows
+(often column headings)
+at the top of each new page the table spans,
+if applicable;
+calling the
+.B TH
+macro marks the end of such rows.
+.
+.MR @g@tbl @MAN1EXT@
+provides a comprehensive reference to the preprocessor and offers
+examples of its use.
+.
+.
+.TP
+.B .PS
+.TQ
+.B .PE
+.TQ
+.B .PF
+.B .PS
+begins a picture to be processed by the
+.I pic
+preprocessor;
+either of
+.B .PE
+or
+.B .PF
+ends it,
+the latter with \[lq]flyback\[rq] to the vertical position at its top.
+.
+.
+.TP
+.BR .EQ \~[\c
+.IR align \~[\c]
+.IR label ]]
+.TQ
+.B .EN
+Demarcate an equation to be processed by the
+.I eqn
+preprocessor.
+.
+The equation is centered by default;
+.I align
+can be
+.BR C ,
+.BR L ,
+.RB or\~ I
+to (explicitly) center,
+left-align,
+or indent it by
+.BR \[rs]n[DI] ,
+respectively.
+.
+If specified,
+.I label
+is set right-aligned.
+.
+.
+.TP
+.B .[
+.TQ
+.B .]
+Demarcate a bibliographic citation to be processed by the
+.I refer
+preprocessor.
+.
+.MR @g@refer @MAN1EXT@
+provides a comprehensive reference to the preprocessor and the format of
+its bibliographic database.
+.
+.
+.P
+When
+.I @g@refer
+emits collected references
+(as might be done on a \[lq]Works Cited\[rq] page),
+it interpolates the string
+.B \[rs]*[REFERENCES]
+as an unnumbered heading
+.RB ( .SH ).
+.
+.
+.br
+.ne 2v
+.P
+Attempting to place a multi-page table inside a keep can lead to
+unpleasant results,
+particularly if the
+.I tbl \" generic
+.RB \[lq] allbox \[rq]
+option is used.
+.
+.
+.\" ====================================================================
+.SS Footnotes
+.\" ====================================================================
+.
+A footnote is typically anchored to a place in the text with a
+.I marker,
+which is a small integer,
+a symbol,
+or arbitrary user-specified text.
+.
+.
+.TP
+.B \[rs]**
+Place an
+.I 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.
+.
+.
+.P
+Enclose the footnote text in
+.B FS
+and
+.B FE
+macro calls to set it at the nearest available \[lq]foot\[rq],
+or bottom,
+of a text column or page.
+.
+.
+.TP
+.BR .FS \~[\c
+.IR marker ]
+Begin a footnote.
+.
+The
+.B .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
+.B *
+string is used,
+and if none exists,
+nothing is prefixed.
+.
+.
+.TP
+.B .FE
+End footnote text.
+.
+.
+.P
+.I groff ms
+provides a hook macro,
+.BR FS\-MARK ,
+for user-determined operations to be performed when the
+.B FS
+macro is called.
+.
+It is passed the same arguments as
+.B .FS
+itself.
+.
+By default,
+this macro has an empty definition.
+.
+.B .FS\-MARK
+is a GNU extension.
+.
+.
+.P
+Footnote text is formatted as paragraphs are,
+using analogous parameters.
+.
+The registers
+.BR FI ,
+.BR FPD ,
+.BR FPS ,
+and
+.B FVS
+correspond to
+.BR PI ,
+.BR PD ,
+.BR PS ,
+and
+.BR VS ,
+respectively;
+.BR FPD ,
+.BR FPS ,
+and
+.B FVS
+are GNU extensions.
+.
+.
+.P
+The
+.B FF
+register controls the formatting of automatically numbered footnote
+paragraphs,
+and those for which
+.B .FS
+is given a
+.I marker
+argument,
+at the bottom of a column or page as follows.
+.
+.
+.RS
+.TP
+0
+Set an automatic number,
+or a specified
+.B FS
+.I marker
+argument,
+as a superscript
+(on typesetter devices)
+or surrounded by square brackets
+(on terminals).
+.
+The footnote paragraph is indented as with
+.B .PP
+if there is an
+.B .FS
+argument or an automatic number,
+and as with
+.B .LP
+otherwise.
+.
+This is the default.
+.
+.
+.TP
+1
+As
+.BR 0 ,
+but set the marker as regular text,
+and follow an automatic number with a period.
+.
+.
+.TP
+2
+As
+.BR 1 ,
+but without indentation
+(like
+.BR .LP ).
+.
+.
+.TP
+3
+As
+.BR 1 ,
+but set the footnote paragraph with the marker hanging
+(like
+.BR .IP ).
+.RE
+.
+.
+.\" ====================================================================
+.SS "Language and localization"
+.\" ====================================================================
+.
+.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
+.IR ms ;
+see
+.MR groff_tmac @MAN5EXT@ .
+.
+.
+.P
+.RS
+.TS
+cb cb
+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
+.RE
+.
+The default for
+.B ABSTRACT
+includes font selection escape sequences to set the word in italics.
+.
+.
+.\" ====================================================================
+.SS "Headers and footers"
+.\" ====================================================================
+.
+There are multiple ways to produce headers and footers.
+.
+One is to define the strings
+.BR LH ,
+.BR CH ,
+and
+.B RH
+to set the left,
+center,
+and right headers,
+respectively;
+and
+.BR LF ,
+.BR CF ,
+and
+.B RF
+to set the left,
+center,
+and right footers.
+.
+This approach suffices for documents that do not distinguish odd- and
+even-numbered pages.
+.
+.
+.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 (\[aq]) shown below with any
+character not appearing in the header or footer text.
+.
+These macros are Berkeley extensions.
+.
+.
+.br
+.ne 5v
+.TP
+.BR .OH \~\[aq]\c
+.IR left \[aq] center \[aq] right \[aq]
+.TQ
+.BR .OF \~\[aq]\c
+.IR left \[aq] center \[aq] right \[aq]
+.TQ
+.BR .EH \~\[aq]\c
+.IR left \[aq] center \[aq] right \[aq]
+.TQ
+.BR .EF \~\[aq]\c
+.IR left \[aq] center \[aq] right \[aq]
+The
+.B OH
+and
+.B EH
+macros define headers for odd- (recto) and even-numbered (verso) pages,
+respectively;
+the
+.B OF
+and
+.B EF
+macros define footers for them.
+.
+.
+.P
+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).
+.
+.
+.TP
+.B .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 \[lq]1\[rq].
+.
+This is a Berkeley extension.
+.
+.
+.P
+For even greater flexibility,
+.I ms
+permits redefinition of the macros called when the page header and
+footer traps are sprung.
+.
+.B PT
+(\[lq]page trap\[rq])
+is called by
+.I ms
+when the header is to be written,
+and
+.B 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)
+.B HD
+macro after
+.BR .PT ;
+you can define
+.B .HD
+if you need additional processing after setting the header.
+.
+.\" Although undocumented in Tuthill's 4.2BSD ms.diffs paper...
+The
+.B HD
+hook is a Berkeley extension.
+.
+Any such macros you (re)define must implement any desired specialization
+for odd-,
+even-,
+or first numbered pages.
+.
+.
+.\" ====================================================================
+.SS "Tab stops"
+.\" ====================================================================
+.
+Use the
+.B ta
+request to set tab stops as needed.
+.
+.
+.TP
+.B .TA
+Reset the tab stops to the
+.I ms
+default
+(every 5 ens).
+.
+Redefine this macro to create a different set of default tab stops.
+.
+.
+.\" ====================================================================
+.SS Margins
+.\" ====================================================================
+.
+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
+.B \[rs]n[PO]
+and line length
+.B \[rs]n[LL]
+determines it.
+.
+.
+.\" ====================================================================
+.SS "Multiple columns"
+.\" ====================================================================
+.
+.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.
+.
+.B \[rs]n[MINGW]
+is the default minimum gutter width;
+it is a GNU extension.
+.
+When multiple columns are in use,
+keeps
+and the
+.B \%HORPHANS
+and
+.B \%PORPHANS
+registers
+work with respect to column breaks instead of page breaks.
+.
+.
+.TP
+.B .1C
+Arrange page text in a single column
+(the default).
+.
+.
+.TP
+.B .2C
+Arrange page text in two columns.
+.
+.
+.TP
+.BR .MC \~[\c
+.IR column-width " [" gutter-width ]]
+Arrange page text in multiple columns.
+.
+If you specify no arguments,
+it is equivalent to the
+.B 2C
+macro.
+.
+Otherwise,
+.I column-width
+is the width of each column and
+.I gutter-width
+is the minimum distance between columns.
+.
+.
+.\" ====================================================================
+.SS "Creating a table of contents"
+.\" ====================================================================
+.
+Define an entry to appear in the table of contents by bracketing its
+text between calls to the
+.B XS
+and
+.B XE
+macros.
+.
+A typical application is to call them immediately after
+.B NH
+or
+.B SH
+and repeat the heading text within them.
+.
+The
+.B XA
+macro,
+used within
+.BR .XS / .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
+.B XA
+macro.
+.
+.B .XS
+and
+.B .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
+.B TC
+or
+.B PX
+to emit the table of contents;
+.B .TC
+resets the page number
+.RB to\~ i
+(Roman numeral one),
+and then calls
+.BR PX .
+.
+All of these macros are Berkeley extensions.
+.
+.
+.TP
+.BR .XS \~[\c
+.IR page-number ]
+.TQ
+.BR .XA \~[\c
+.IR page-number \~[ indentation ]]
+.TQ
+.B .XE
+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
+.RB \[lq] no \[rq]
+prevents a leader and page number from being emitted for that entry.
+.
+Use of
+.B .XA
+within
+.BR .XS / .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
+.B .XS
+and
+.B .XE
+is stored for later recall by
+.BR .PX .
+.
+.
+.TP
+.BR .PX \~[ no ]
+Switch to single-column layout.
+.
+Unless
+.RB \[lq] no \[rq]
+is specified,
+center and interpolate
+.B \[rs]*[TOC]
+in bold and two points larger than the body text.
+.
+Emit the table of contents entries.
+.
+.
+.TP
+.BR .TC \~[ no ]
+Set the page number to\~1,
+the page number format to lowercase Roman numerals,
+and call
+.B PX
+(with a
+.RB \[lq] no \[rq]
+argument,
+if present).
+.
+.
+.P
+The remaining features in this subsection are GNU extensions.
+.
+.I groff ms
+obviates the need to repeat heading text after
+.B .XS
+calls.
+.
+Call
+.B .XN
+and
+.B .XH
+after
+.B .NH
+and
+.BR .SH ,
+respectively.
+.
+Text to be appended to the formatted section heading,
+but not to appear in the table of contents entry,
+can follow these calls.
+.
+.
+.TP
+.BI .XN\~ heading-text
+Format
+.I heading-text
+and create a corresponding table of contents entry;
+the indentation is computed from the
+.I depth
+argument of the preceding
+.B NH
+call.
+.
+.
+.TP
+.BI .XH\~ "depth heading-text"
+As
+.BR .XN ,
+but use
+.I depth
+to determine the indentation.
+.
+.
+.P
+.I groff ms
+encourages customization of table of contents entry production.
+.
+(Re-)define any of the following macros as desired.
+.
+.
+.TP
+.BI \%.XN\-REPLACEMENT\~ heading-text
+.TQ
+.BI \%.XH\-REPLACEMENT\~ "depth heading-text"
+These hook macros implement
+.B .XN
+and
+.BR .XH ,
+and call
+.B \%XN\-INIT
+and
+.BR \%XH\-INIT ,
+respectively,
+then call
+.B \%XH\-UPDATE\-TOC
+with the arguments given them.
+.
+.
+.TP
+.B \%.XH\-INIT
+.TQ
+.B \%.XN\-INIT
+These hook macros do nothing by default.
+.
+.
+.TP
+.BI \%.XH\-UPDATE\-TOC\~ "depth heading-text"
+Bracket
+.I heading-text
+with
+.B XS
+and
+.B XE
+calls,
+indenting it by 2 ens per level of
+.I depth
+beyond the first.
+.
+.
+.P
+You can customize the style of the leader that bridges each table of
+contents entry with its page number;
+define the
+.B TC\-LEADER
+special character by using the
+.B char
+request.
+.
+A typical leader combines the dot glyph
+.RB \[lq] .\& \[rq]
+with a horizontal motion escape sequence to spread the dots.
+.
+The width of the page number field is stored in the
+.B TC\-MARGIN
+register.
+.
+.
+.\" ====================================================================
+.SH "Differences from AT&T \f[I]ms\f[]"
+.\" ====================================================================
+.
+The
+.I groff ms
+macros are an independent reimplementation,
+using no AT&T code.
+.
+Since they take advantage of the extended features of
+.IR groff ,
+they cannot be used with AT&T
+.IR troff .
+.
+.I groff ms
+supports features described above as Berkeley and Tenth Edition Research
+Unix extensions,
+and adds several of its own.
+.
+.
+.IP \[bu] 3n
+The internals of
+.I groff ms
+differ from the internals of AT&T
+.IR ms .
+.
+Documents that depend upon implementation details of AT&T
+.I ms
+may not format properly with
+.IR "groff ms" .
+.
+Such details include macros whose function was not documented in the
+AT&T
+.I ms
+manual
+(\[lq]Typing Documents on the UNIX System: Using the \-ms Macros with
+Troff and Nroff\[rq],
+M.\& E.\& Lesk,
+Bell Laboratories,
+1978).
+.\" TODO: Use refer(1)?
+.\" XXX: We support RT anyway; maybe we should stop?
+.
+.
+.IP \[bu]
+The error-handling policy of
+.I groff ms
+is to detect and report errors,
+rather than to ignore them silently.
+.
+.
+.IP \[bu]
+Tenth Edition \" possibly 9th
+Research Unix supported
+.BR P1 / P2
+macros to bracket code examples;
+.I groff ms
+does not.
+.
+.
+.IP \[bu]
+.I groff ms
+does not work in GNU
+.IR troff 's \" GNU
+AT&T compatibility mode.
+.
+If loaded when that mode is enabled,
+it aborts processing with a diagnostic message.
+.
+.
+.IP \[bu]
+Multiple line spacing is not supported.
+.
+Use a larger vertical spacing instead.
+.
+.
+.IP \[bu]
+.I groff ms
+uses the same header and footer defaults in both
+.I nroff
+and
+.I troff
+modes
+as AT&T
+.I ms
+does in
+.I troff
+mode;
+AT&T's default in
+.I nroff
+mode is to put the date,
+in U.S.\& traditional format
+(e.g.,
+\[lq]January 1, 2021\[rq]),
+in the center footer
+(the
+.B CF
+string).
+.
+.
+.IP \[bu]
+Many
+.I 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
+.B .RS
+and
+.B .RE
+instead of the
+.B in
+request.
+.
+.
+.IP \[bu]
+AT&T
+.I ms
+interpreted the values of the registers
+.B PS
+and
+.B VS
+in points,
+and did not support the use of scaling units with them.
+.
+.I groff ms
+interprets values of the registers
+.BR PS ,
+.BR VS ,
+.BR FPS ,
+and
+.BR FVS ,
+equal to or larger than\~1,000
+(one thousand)
+as decimal fractions multiplied by\~1,000.
+.
+(Register values are converted to and stored as basic
+units.
+.
+See \[lq]Measurements\[rq] in the
+.I groff
+Texinfo manual or in
+.MR groff @MAN7EXT@ ).
+.
+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,
+.RB \[lq] "groff \-rPS=10.5p" \[rq]
+at the shell prompt is equivalent to placing
+.RB \[lq] ".nr PS 10.5p" \[rq]
+at the beginning of the document.
+.
+.
+.IP \[bu]
+AT&T
+.IR ms 's
+.B AU
+macro supported arguments used with some document types;
+.I groff ms
+does not.
+.
+.
+.IP \[bu]
+Right-aligned displays are available.
+.
+The AT&T
+.I ms
+manual observes that \[lq]it is tempting to assume that
+.RB \[lq] ".DS R" \[rq]
+will right adjust lines,
+but it doesn't work\[rq].
+.
+In
+.IR "groff ms" ,
+it does.
+.
+.
+.IP \[bu]
+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.
+.
+.
+.IP \[bu]
+.I groff ms
+supports the
+.B PN
+register,
+but it is not necessary;
+you can access the page number via the usual
+.B %
+register and invoke the
+.B af
+request to assign a different format to it if desired.
+.
+(If you redefine the
+.I ms
+.B PT
+macro \" I wouldn't mention that, but Lesk 1978 encourages doing so. :-/
+and desire special treatment of certain page numbers\[em]like
+.RB \[lq] 1 \[rq]\[em]you
+may need to handle a non-Arabic page number format,
+as
+.IR "groff ms" 's
+.B .PT
+does;
+see the macro package source.
+.
+.I groff ms
+aliases the
+.B PN
+register to
+.BR % .)
+.
+.
+.IP \[bu]
+The AT&T
+.I ms
+manual documents registers
+.B CW
+and
+.B GW
+as setting the default column width and \[lq]intercolumn gap\[rq],
+respectively,
+and which applied when
+.B .MC
+was called with fewer than two arguments.
+.
+.I groff ms
+instead treats
+.B .MC
+without arguments as synonymous with
+.BR .2C ;
+there is thus no occasion for a default column width register.
+.
+Further,
+the
+.B MINGW
+register
+and the second argument to
+.B .MC
+specify a
+.I minimum
+space between columns,
+not the fixed gutter width of AT&T
+.IR ms .
+.
+.
+.IP \[bu]
+The AT&T
+.I ms
+manual did not document the
+.B QI
+register;
+Berkeley and
+.I "groff ms"
+do.
+.
+.
+.IP \[bu]
+The register
+.B 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.
+.
+.
+.\" ====================================================================
+.SS "Unix Version\~7 macros not implemented by \f[I]groff ms\f[]"
+.\" ====================================================================
+.
+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
+.BR EG , \" engineer's notes
+.BR IM , \" internal memorandum
+.BR MF , \" memorandum for file
+.BR MR , \" memorandum for record
+.BR TM , \" technical memorandum
+.BR TR ), \" technical report
+were meaningful only in conjunction with the use of certain document
+types
+(\c
+.BR AT , \" attachments
+.BR CS , \" cover sheet info for `TM` documents
+.BR CT , \" copies to
+.BR OK , \" "other keywords" for `TM` documents
+.BR SG ), \" signatures for `TM` documents
+stored the postal addresses of Bell Labs sites
+(\c
+.BR HO , \" Holmdel
+.BR IH , \" Naperville
+.BR MH , \" Murray Hill
+.BR PY , \" Piscataway
+.BR WH ), \" Whippany
+or lacked a stable definition over time
+(\c
+.BR UX ). \" Unix; on 1st use, add footnote identifying trademark owner
+.
+.
+.\" ====================================================================
+.SH "Legacy features"
+.\" ====================================================================
+.
+.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
+.MR groff_char @MAN7EXT@
+instead.
+.
+.
+.\" ====================================================================
+.SS "AT&T \f[I]ms\f[] accent mark strings"
+.\" ====================================================================
+.
+AT&T
+.I ms
+defined
+accent mark strings as follows.
+.
+.
+.P
+.TS
+Cb Lb
+Lf(CR) L.
+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
+.
+.
+.\" ====================================================================
+.SS "Berkeley \f[I]ms\f[] accent mark and glyph strings"
+.\" ====================================================================
+.
+Berkeley
+.I ms
+offered an
+.B AM
+macro;
+calling it redefined the AT&T accent mark strings
+(except for
+.BR \[rs]*C ),
+applied them to the
+.I preceding
+glyph,
+and defined additional strings,
+some for spacing glyphs.
+.
+.
+.TP
+.B .AM
+Enable alternative accent mark and glyph-producing strings.
+.
+.
+.P
+.TS
+Cb Lb
+Lf(CR) L.
+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
+.
+.
+.\" ====================================================================
+.SH "Naming conventions"
+.\" ====================================================================
+.
+The following conventions are used for names of macros,
+strings,
+and registers.
+.
+External names available to documents that use the
+.I groff ms
+macros contain only uppercase letters and digits.
+.
+.
+.LP
+Internally,
+the macros are divided into modules.
+.
+Conventions for identifier names are as follows.
+.
+.IP \[bu] 3n
+Names used only within one module are of the form
+.IB \%module * name\c
+\&.
+.
+.IP \[bu]
+Names used outside the module in which they are defined are of the form
+.IB \%module @ name\c
+\&.
+.
+.IP \[bu]
+Names associated with a particular environment are of the form
+.IB \%environment : name\c
+\&;
+these are used only within the
+.B par
+module.
+.
+.IP \[bu]
+.I name
+does not have a module prefix.
+.
+.IP \[bu]
+Constructed names used to implement arrays are of the form
+.IB \%array ! index\c
+\&.
+.
+.
+.PP
+Thus the
+.I groff ms
+macros reserve the following names:
+.
+.IP \[bu] 3n
+Names containing the characters
+.BR * ,
+.BR @ ,
+and\~\c
+.BR : .
+.
+.IP \[bu]
+Names containing only uppercase letters and digits.
+.
+.
+.\" ====================================================================
+.SH Files
+.\" ====================================================================
+.
+.TP
+.I @MACRODIR@/\:@TMAC_S_PREFIX@s\:.tmac
+implements the package.
+.
+.
+.TP
+.I @MACRODIR@/refer\-ms.tmac
+implements
+.MR @g@refer @MAN1EXT@
+support for
+.IR ms .
+.
+.
+.TP
+.I @MACRODIR@/\:ms\:.tmac
+is a wrapper enabling the package to be loaded with
+.RB \[lq] "groff \-m ms" \[rq].
+.
+.
+.
+.\" ====================================================================
+.SH Authors
+.\" ====================================================================
+.
+The GNU version of the
+.I ms
+macro package was written by James Clark and contributors.
+.
+This document was written by Clark,
+.MT lkollar@\:despammed\:.com
+Larry Kollar
+.ME ,
+and
+.MT g.branden\:.robinson@\:gmail\:.com
+G.\& Branden Robinson
+.ME .
+.
+.
+.br
+.ne 8v
+.\" ====================================================================
+.SH "See also"
+.\" ====================================================================
+.
+A manual is available in source and rendered form.
+.
+On your system,
+it may be compressed and/or available in additional formats.
+.
+.
+.TP
+.I @DOCDIR@/\:ms\:.ms
+.TQ
+.I @DOCDIR@/\:ms\:.ps
+\[lq]Using
+.I groff
+with the
+.I ms
+Macro Package\[rq];
+Larry Kollar and \%G.\~Branden Robinson.
+.
+.
+.br
+.ne 5v
+.TP
+.I @DOCDIR@/\:\%msboxes\:.ms
+.TQ
+.I @DOCDIR@/\:\%msboxes\:.pdf
+\[lq]Using PDF boxes with
+.I groff
+and the
+.I ms
+macros\[rq];
+Deri James.
+.
+.B \%BOXSTART
+and
+.B \%BOXSTOP
+macros are available via the
+.I sboxes
+extension package,
+enabling colored,
+bordered boxes when the
+.B pdf
+output device is used.
+.
+.
+.PP
+.IR "Groff: The GNU Implementation of troff" ,
+by Trent A.\& Fisher and Werner Lemberg,
+is the primary
+.I groff
+manual.
+.
+You can browse it interactively with \[lq]info groff\[rq].
+.
+.
+.PP
+.MR groff @MAN1EXT@ ,
+.MR @g@troff @MAN1EXT@ ,
+.MR @g@tbl @MAN1EXT@ ,
+.MR @g@pic @MAN1EXT@ ,
+.MR @g@eqn @MAN1EXT@ ,
+.MR @g@refer @MAN1EXT@
+.
+.
+.\" Restore compatibility mode (for, e.g., Solaris 10/11).
+.cp \n[*groff_groff_ms_7_man_C]
+.do rr *groff_groff_ms_7_man_C
+.
+.
+.\" Local Variables:
+.\" fill-column: 72
+.\" mode: nroff
+.\" End:
+.\" vim: set filetype=groff textwidth=72: