]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdoc.7
Removed superfluous FIXMEs in mdoc_term.c.
[mandoc.git] / mdoc.7
diff --git a/mdoc.7 b/mdoc.7
index 214f9018a8ae39030103aa83a9a5b1faac49c076..a7df1cb98accd611ed095d11af306decf687d6fc 100644 (file)
--- a/mdoc.7
+++ b/mdoc.7
@@ -1,4 +1,4 @@
-.\"    $Id: mdoc.7,v 1.30 2009/06/17 14:08:47 kristaps Exp $
+.\"    $Id: mdoc.7,v 1.41 2009/07/12 19:34:51 kristaps Exp $
 .\"
 .\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
 .\"
@@ -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 12 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 be closed out by
 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 or end-of-file).
 .\" 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, body, no tail).
 .\" 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 that the body
 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 column indicates
 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 may contain heads
 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 arguments.
 .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 and expecting the
 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,13 @@ 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.
+.\" LIST-ITEM
+.It
+The end-of-line whitespace warnings are superfluous holdovers from
+historic groff.
 .El