=================================================================== RCS file: /cvs/mandoc/mdoc.7,v retrieving revision 1.27 retrieving revision 1.36 diff -u -p -r1.27 -r1.36 --- mandoc/mdoc.7 2009/06/12 09:18:00 1.27 +++ mandoc/mdoc.7 2009/07/04 11:04:07 1.36 @@ -1,4 +1,4 @@ -.\" $Id: mdoc.7,v 1.27 2009/06/12 09:18:00 kristaps Exp $ +.\" $Id: mdoc.7,v 1.36 2009/07/04 11:04: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 12 2009 $ +.Dd $Mdocdate: July 4 2009 $ .Dt MDOC 7 .Os .\" SECTION @@ -28,10 +28,15 @@ 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. +language. Our reference implementation is +.Xr mandoc 1 . +The +.Sx COMPATIBILITY +section describes compatibility with +.Xr groff 1 . .\" PARAGRAPH .Pp An @@ -73,9 +78,19 @@ or .Sq \&.Bd \-unfilled contexts. .\" SUB-SECTION +.Ss Comments +Anything following a +.Sq \e" +delimiter is considered a comment (unless the +.Sq \e +itself has been escaped) and is ignored to the end of line. +Furthermore, a macro line with only a control character +.Sq \. , +optionally followed by whitespace, is ignored. +.\" SUB-SECTION .Ss Reserved Characters Within a macro line, the following characters are reserved: -.Bl -tag -width 12n -offset XXXX -compact +.Bl -tag -width Ds -offset XXXX -compact .It \&. .Pq period .It \&, @@ -96,6 +111,8 @@ Within a macro line, the following characters are rese .Pq question .It \&! .Pq exclamation +.It \&| +.Pq vertical bar .El .\" PARAGRAPH .Pp @@ -119,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 @@ -261,11 +305,11 @@ In-lines have \(>=0 scoped arguments. \&.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 @@ -284,7 +328,7 @@ some .Pc don't have heads. .Pp -.Bl -column "MacroX" "CallableX" "ParsableX" "Closing" -compact -offset XXXX +.Bl -column -compact -offset XXXX "MacroX" "CallableX" "ParsableX" "Closing" .It Em Macro Ta Em Callable Ta Em Parsable Ta Em Closing .It \&.Sh Ta \&No Ta \&No Ta \&.Sh .It \&.Ss Ta \&No Ta \&No Ta \&.Sh, \&.Ss @@ -296,7 +340,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 "MacroX" "CallableX" "ParsableX" "closed by XXX" -compact -offset XXXX +.Bl -column -compact -offset XXXX "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 @@ -470,27 +514,54 @@ and macros are obsolete. .\" SECTION .Sh COMPATIBILITY -The mdoc language was traditionally a -.Qq roff -macro package; most existing manuals were written with mdoc syntax -dictated by system-dependent roff installations. This section documents -compatibility with these systems. +This section documents compatibility with other roff implementations, at +this time limited to +.Xr groff 1 . +The term +.Qq historic groff +refers to those versions before the +.Pa doc.tmac +file re-write +.Pq somewhere between 1.15 and 1.19 . .Pp .Bl -dash -compact .\" LIST-ITEM .It -.Sq \&.An , -.Sq \&.Fo , -.Sq \&.Lk , -.Sq \&.Ms , -.Sq \&.Mt , +The \-width argument to +.Sq \&.Bl +respects indent and indent-two (groff does too, but does not document +the fact). +.\" LIST-ITEM +.It +Some character sequences in groff are not handled depending on escape +style, e.g., +.Sq \e(ba and -.Sq \&.St -historically weren't callable. +.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 +made historic groff +.Qq go orbital +but is a proper delimiter in this implementation. +.\" LIST-ITEM +.It .Sq \&.It \-nested -is assumed for all lists: any list may be nested and +is assumed for all lists (it wasn't in historic groff): any list may be +nested and .Sq \-enum lists will restart the sequence only for the sub-list. .\" LIST-ITEM @@ -505,26 +576,16 @@ The macro only accepts a single parameter. .\" LIST-ITEM .It -The system-name macros ( -.Ns Sq \&.At , -.Sq \&.Bsx , -.Sq \&.Bx , -.Sq \&.Fx , -.Sq \&.Nx , -.Sq \&.Ox , -and -.Sq \&.Ux ) -are callable. -.\" LIST-ITEM -.It Some manuals use .Sq \&.Li incorrectly by following it with a reserved character and expecting the delimiter to render. This is not supported. .\" LIST-ITEM .It -.Sq \&.Cd -is callable. +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. .El .\" SECTION .Sh SEE ALSO @@ -538,7 +599,7 @@ utility was written by .An Kristaps Dzonsons Aq kristaps@kth.se . .\" SECTION .Sh CAVEATS -There are several ambiguous parts of mdoc. +There are many ambiguous parts of mdoc. .Pp .Bl -dash -compact .\" LIST-ITEM @@ -603,4 +664,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