=================================================================== RCS file: /cvs/mandoc/mdoc.7,v retrieving revision 1.30 retrieving revision 1.42 diff -u -p -r1.30 -r1.42 --- mandoc/mdoc.7 2009/06/17 14:08:47 1.30 +++ mandoc/mdoc.7 2009/07/13 07:23:07 1.42 @@ -1,4 +1,4 @@ -.\" $Id: mdoc.7,v 1.30 2009/06/17 14:08:47 kristaps Exp $ +.\" $Id: mdoc.7,v 1.42 2009/07/13 07:23:07 kristaps Exp $ .\" .\" Copyright (c) 2009 Kristaps Dzonsons .\" @@ -14,7 +14,7 @@ .\" 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 17 2009 $ +.Dd $Mdocdate: July 13 2009 $ .Dt MDOC 7 .Os .\" SECTION @@ -28,8 +28,8 @@ The language is used to format .Bx .Ux -manuals. In this reference document, we describe the syntax, ontology -and structure of the +manuals. In this reference document, we describe the syntax and +structure of the .Nm language. Our reference implementation is .Xr mandoc 1 . @@ -46,7 +46,7 @@ character .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 @@ -90,7 +90,7 @@ optionally followed by whitespace, is ignored. .\" 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 \&, @@ -136,14 +136,41 @@ or a single one-character sequence. .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 -Macros are classified in an ontology described by their scope rules. -Some macros are allowed to deviate from their classifications to -preserve backward-compatibility with old macro combinations still found -in the manual corpus. These are specifically noted on a per-macro -basis. +Each +.Nm +document must begin with the document prologue, containing, in order, +.Sq \&.Dd , +.Sq \&.Dt , +and +.Sq \&.Os . +Following these, the document body must begin with the NAME section +containing at least one +.Sq \&.Nm +followed by a +.Sq \&.Nd +macro. +.Pp +At least one free-form or macro line must follow this prologue. +.\" +.Ss Classification +Macros are classified by their scope rules. Some macros are allowed to +deviate from their classifications to preserve backward-compatibility +with old macro combinations still found in the manual corpus. These are +specifically noted on a per-macro basis. .\" SUB-SECTION .Ss Scope .Bl -inset @@ -151,7 +178,7 @@ basis. .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 @@ -186,7 +213,7 @@ on whether it's parsable. In this table, 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 @@ -204,7 +231,7 @@ If a macro (block or in-line) is parsable, it may also 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 , @@ -237,7 +264,7 @@ closes it out (closure may be implicit at end-of-line .\" 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 @@ -245,7 +272,7 @@ Block full-explicit (may contain head, body, tail). .\" 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 @@ -253,7 +280,7 @@ Block full-implicit (may contain zero or more heads, b .\" 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 @@ -267,22 +294,22 @@ Block partial-implicit (no head, body, no tail). Note 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 .Ed -.\" +.\" SECTION .Sh MACROS This section contains a complete list of all .Nm -macros, arranged ontologically. A +macros, arranged by classification. A .Qq callable macro is invoked subsequent to the initial macro-line macro. A .Qq parsable @@ -301,8 +328,9 @@ some .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 @@ -313,7 +341,7 @@ None of these macros are callable or parsed. The last 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 @@ -329,7 +357,7 @@ the explicit scope rules. All contains bodies, some m 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 @@ -350,7 +378,7 @@ The 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 @@ -369,7 +397,7 @@ head 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 @@ -403,7 +431,7 @@ arguments is .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 @@ -426,7 +454,6 @@ then the macro accepts an arbitrary number of argument .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 @@ -500,13 +527,27 @@ file re-write .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. @@ -535,11 +576,15 @@ incorrectly by following it with a reserved character 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 @@ -618,4 +663,9 @@ etc.). There's no way to refer to references in .Sq \&.Rs/.Re blocks. +.\" LIST-ITEM +.It +The \-split and \-nosplit arguments to +.Sq \&.An +are inane. .El