-.\" $Id: mdoc.7,v 1.33 2009/06/25 10:51:21 kristaps Exp $
+.\" $Id: mdoc.7,v 1.42 2009/07/13 07:23:07 kristaps Exp $
.\"
.\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
.\"
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd $Mdocdate: June 25 2009 $
+.Dd $Mdocdate: July 13 2009 $
.Dt MDOC 7
.Os
.\" SECTION
.Sq \.
are parsed for macros. Other lines are interpreted within the scope of
prior macros:
-.Bd -literal -offset XXX
+.Bd -literal -offset indent
\&.Sh Macro lines change control state.
Other lines are interpreted within the current state.
.Ed
.\" SUB-SECTION
.Ss Reserved Characters
Within a macro line, the following characters are reserved:
-.Bl -tag -width Ds -offset XXXX -compact
+.Bl -tag -width Ds -offset indent -compact
.It \&.
.Pq period
.It \&,
.Pp
Characters may alternatively be escaped by a slash-asterisk,
.Sq \e* ,
-with the same combinations as described above. This form is deprecated.
+with the same combinations as described above.
+.Pp
+Terms may also be text-decorated using the
+.Sq \ef
+escape followed by a text-decoration letter: B (bold), I, (italic), or P
+and R (Roman, or reset). This form is not recommended.
+.\" SUB-SECTION
+.Ss Whitespace
+Unless in literal mode or specifically escaped, consecutive blocks of
+whitespace are pruned from input. These are later re-added, if
+applicable, by a front-end utility such as
+.Xr mandoc 1 .
.\" SECTION
.Sh STRUCTURE
Each
.It Em Block
macros enclose other block macros, in-line macros or text, and
may span multiple lines.
-.Bl -inset -offset XXXX
+.Bl -inset -offset indent
.\" LIST-ITEM
.It Em Full-block
macros always span multiple lines. They consist of zero or
refers to block full-explicit and so on.
.\" PARAGRAPH
.Pp
-.Bl -tag -width 12n -offset XXXX -compact
+.Bl -tag -width 12n -offset indent -compact
.It BPE , BFE
corresponding explicit closure macro
.It BFI
one of the following scenarios (unless specifically noted otherwise):
.\" PARAGRAPH
.Pp
-.Bl -dash -offset XXXX -compact
+.Bl -dash -offset indent -compact
.It
a sequence of >0 space-separated
.Sx Reserved Characters ,
.\" PARAGRAPH
.Pp
Block full-explicit (may contain head, body, tail).
-.Bd -literal -offset XXXX
+.Bd -literal -offset indent
\&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBhead...\(rB
\(lBbody...\(rB
\&.Yc \(lBtail...\(rB
.\" PARAGRAPH
.Pp
Block full-implicit (may contain zero or more heads, body, no tail).
-.Bd -literal -offset XXXX
+.Bd -literal -offset indent
\&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBhead... \(lBTa head...\(rB\(rB
\(lBbody...\(rB
\&.Yc
.\" PARAGRAPH
.Pp
Block partial-explicit (may contain head, multi-line body, tail).
-.Bd -literal -offset XXXX
+.Bd -literal -offset indent
\&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBhead...\(rB
\(lBbody...\(rB
\&.Yc \(lBtail...\(rB
section may be followed by zero or more
.Sx Reserved Words .
These are in the block scope, but not in the body scope.
-.Bd -literal -offset XXXX
+.Bd -literal -offset indent
\&.Yo \(lB\-arg \(lBval...\(rB\(rB \(lBbody...\(rB \(lBreserved...\(rB
.Ed
.\" PARAGRAPH
.Pp
In-lines have \(>=0 scoped arguments.
-.Bd -literal -offset XXX
+.Bd -literal -offset indent
\&.Yy \(lB\-arg \(lBval...\(rB\(rB \(lBargs...\(rB
\&.Yy \(lB\-arg \(lBval...\(rB\(rB arg0 arg1 argN
.Pc
don't have heads.
.Pp
-.Bl -column -compact -offset XXXX "MacroX" "CallableX" "ParsableX" "Closing"
+.Bl -column -compact -offset indent "MacroX" "CallableX" "ParsableX" "Closing"
.It Em Macro Ta Em Callable Ta Em Parsable Ta Em Closing
+.It \&.Nd Ta \&No Ta \&No Ta \&.Sh
.It \&.Sh Ta \&No Ta \&No Ta \&.Sh
.It \&.Ss Ta \&No Ta \&No Ta \&.Sh, \&.Ss
.It \&.It Ta \&No Ta Yes Ta \&.It, \&.El
the explicit scope rules. All contains bodies, some may contain heads
.Pq So \&Bf Sc .
.Pp
-.Bl -column -compact -offset XXXX "MacroX" "CallableX" "ParsableX" "closed by XXX"
+.Bl -column -compact -offset indent "MacroX" "CallableX" "ParsableX" "closed by XXX"
.It Em Macro Ta Em Callable Ta Em Parsable Ta Em Scope
.It \&.Bd Ta \&No Ta \&No Ta closed by \&.Ed
.It \&.Ed Ta \&No Ta \&No Ta opened by \&.Bd
All of these are callable and parsed for further macros. Their scopes
close at the invocation's end-of-line.
.Pp
-.Bl -column "MacroX" "CallableX" "ParsableX" -compact -offset XXXX
+.Bl -column "MacroX" "CallableX" "ParsableX" -compact -offset indent
.It Em Macro Ta Em Callable Ta Em Parsable
.It \&.Aq Ta Yes Ta Yes
.It \&.Op Ta Yes Ta Yes
may be broken by
.Sq \&.Oc
as in the following example:
-.Bd -literal -offset XXXX
+.Bd -literal -offset indent
\&.Oo
\&.Op Fl a Oc
.Ed
and/or tail
.Pq So \&.Ec Sc .
.Pp
-.Bl -column "MacroX" "CallableX" "ParsableX" "closed by XXXX" -compact -offset XXXX
+.Bl -column "MacroX" "CallableX" "ParsableX" "closed by XXXX" -compact -offset indent
.It Em Macro Ta Em Callable Ta Em Parsable Ta Em Scope
.It \&.Ao Ta Yes Ta Yes Ta closed by \&.Ac
.It \&.Ac Ta Yes Ta Yes Ta opened by \&.Ao
.Pq n ,
then the macro accepts an arbitrary number of arguments.
.Pp
-.Bl -column "MacroX" "CallableX" "ParsableX" "Arguments" -compact -offset XXXX
+.Bl -column "MacroX" "CallableX" "ParsableX" "Arguments" -compact -offset indent
.It Em Macro Ta Em Callable Ta Em Parsable Ta Em Arguments
.It \&.Dd Ta \&No Ta \&No Ta >0
.It \&.Dt Ta \&No Ta \&No Ta n
.It \&.Ic Ta Yes Ta Yes Ta >0
.It \&.In Ta \&No Ta \&No Ta n
.It \&.Li Ta Yes Ta Yes Ta n
-.It \&.Nd Ta \&No Ta \&No Ta n
.It \&.Nm Ta Yes Ta Yes Ta n
.It \&.Ot Ta \&No Ta \&No Ta n
.It \&.Pa Ta Yes Ta Yes Ta n
.Bl -dash -compact
.\" LIST-ITEM
.It
+Some character sequences in groff are not handled depending on escape
+style, e.g.,
+.Sq \e(ba
+and
+.Sq \e*(Ba
+may not be interchanged. This is no longer the case: all character
+sequences resolve to the same symbol, regardless the escape style.
+.\" LIST-ITEM
+.It
+Blocks of whitespace are stripped from both macro and free-form text
+lines (except when in literal mode), while groff would retain whitespace
+in free-form text lines.
+.\" LIST-ITEM
+.It
Historic groff has many un-callable macros. Most of these (excluding
some block-level macros) are now callable, conforming to the
non-historic groff version.
.\" LIST-ITEM
.It
The vertical bar
-.Sq \(Ba
+.Sq \(ba
made historic groff
.Qq go orbital
but is a proper delimiter in this implementation.
delimiter to render. This is not supported.
.\" LIST-ITEM
.It
-If an special-character control character
-.Sq \e
-is escaped, it will
-obviously not render the sequence. Even newer versions of groff seem to
-dither on this.
+If an special-character control character is escaped
+.Sq \e\e ,
+it will obviously not render the subsequent sequence. Even newer
+versions of groff seem to dither on this.
+.\" LIST-ITEM
+.It
+In groff, the
+.Sq \&.Fo
+macro only produces the first parameter. This is no longer the case.
.El
.\" SECTION
.Sh SEE ALSO