-.\" $Id: mdoc.7,v 1.35 2009/07/04 09:00:41 kristaps Exp $
+.\" $Id: mdoc.7,v 1.41 2009/07/12 19:34:51 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: July 4 2009 $
+.Dd $Mdocdate: July 12 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 \&,
.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
.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
The \-split and \-nosplit arguments to
.Sq \&.An
are inane.
+.\" LIST-ITEM
+.It
+The end-of-line whitespace warnings are superfluous holdovers from
+historic groff.
.El