[BACK]Return to mdoc.7 CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/mdoc.7 between version 1.110 and 1.123

version 1.110, 2010/05/26 10:39:35 version 1.123, 2010/06/07 11:14:13
Line 33  section describes compatibility with other troff \-mdo
Line 33  section describes compatibility with other troff \-mdo
 .Pp  .Pp
 An  An
 .Nm  .Nm
 document follows simple rules:  lines beginning with the control  document follows simple rules: lines beginning with the control
 character  character
 .Sq \.  .Sq \.
 are parsed for macros.  Other lines are interpreted within the scope of  are parsed for macros.  Other lines are interpreted within the scope of
Line 122  escape followed by an indicator: B (bold), I, (italic)
Line 122  escape followed by an indicator: B (bold), I, (italic)
 A numerical representation 3, 2, or 1 (bold, italic, and Roman,  A numerical representation 3, 2, or 1 (bold, italic, and Roman,
 respectively) may be used instead.  respectively) may be used instead.
 A text decoration is valid within  A text decoration is valid within
 the current font scope only:  if a macro opens a font scope alongside  the current font scope only: if a macro opens a font scope alongside
 its own scope, such as  its own scope, such as
 .Sx \&Bf  .Sx \&Bf
 .Cm \&Sy ,  .Cm \&Sy ,
Line 333  must be the NAME section, consisting of at least one
Line 333  must be the NAME section, consisting of at least one
 followed by  followed by
 .Sx \&Nd .  .Sx \&Nd .
 .Pp  .Pp
 Following that, convention dictates specifying at least the SYNOPSIS and  Following that, convention dictates specifying at least the
 DESCRIPTION sections, although this varies between manual sections.  .Em SYNOPSIS
   and
   .Em DESCRIPTION
   sections, although this varies between manual sections.
 .Pp  .Pp
 The following is a well-formed skeleton  The following is a well-formed skeleton
 .Nm  .Nm
Line 343  file:
Line 346  file:
 \&.Dd $\&Mdocdate$  \&.Dd $\&Mdocdate$
 \&.Dt mdoc 7  \&.Dt mdoc 7
 \&.Os  \&.Os
 \&.  
 \&.Sh NAME  \&.Sh NAME
 \&.Nm foo  \&.Nm foo
 \&.Nd a description goes here  \&.Nd a description goes here
 \&.\e\*q The next is for sections 2, 3, & 9 only.  \&.\e\*q The next is for sections 2, 3, & 9 only.
 \&.\e\*q .Sh LIBRARY  \&.\e\*q .Sh LIBRARY
 \&.  
 \&.Sh SYNOPSIS  \&.Sh SYNOPSIS
 \&.Nm foo  \&.Nm foo
 \&.Op Fl options  \&.Op Fl options
 \&.Ar  \&.Ar
 \&.  
 \&.Sh DESCRIPTION  \&.Sh DESCRIPTION
 The  The
 \&.Nm  \&.Nm
Line 453  And for the third, configurations (section 4):
Line 453  And for the third, configurations (section 4):
 Manuals not in these sections generally don't need a  Manuals not in these sections generally don't need a
 .Em SYNOPSIS .  .Em SYNOPSIS .
 .Pp  .Pp
 See  Some macros are displayed differently in the
 .Sx \&Op ,  .Em SYNOPSIS
   section, particularly
   .Sx \&Nm ,
 .Sx \&Cd ,  .Sx \&Cd ,
   .Sx \&Fd ,
 .Sx \&Fn ,  .Sx \&Fn ,
 .Sx \&Ft ,  .Sx \&Fo ,
   .Sx \&In ,
   .Sx \&Vt ,
 and  and
 .Sx \&Vt .  .Sx \&Ft .
   All of these macros are output on their own line.  If two such
   dissimilar macros are pair-wise invoked (except for
   .Sx \&Ft
   before
   .Sx \&Fo
   or
   .Sx \&Fn ) ,
   they are separated by a vertical space, unless in the case of
   .Sx \&Fo ,
   .Sx \&Fn ,
   and
   .Sx \&Ft ,
   which are always separated by vertical space.
 .It Em DESCRIPTION  .It Em DESCRIPTION
 This expands upon the brief, one-line description in  This expands upon the brief, one-line description in
 .Em NAME .  .Em NAME .
Line 1139  macro.
Line 1157  macro.
 These dictate the width of columns either as  These dictate the width of columns either as
 .Sx Scaling Widths  .Sx Scaling Widths
 or literal text.  or literal text.
 List entry bodies must be left empty.  If the initial macro of a
 Column bodies have the following syntax:  .Fl column
 .Pp  list is not an
 .D1 .It col1 <TAB> ... coln  .Sx \&It ,
 .D1 .It col1 Ta ... coln  an
 .D1 .It col1 <TAB> col2 Ta coln  .Sx \&It
 .Pp  context spanning each line is implied until an
 where columns may be separated by tabs, the literal string  .Sx \&It
 .Qq Ta ,  line macro is encountered, at which point list bodies are interpreted as
 or a mixture of both.  described in the
 These are equivalent except that quoted sections propogate over tabs,  .Sx \&It
 for example,  documentation.
 .Pp  
 .D1 .It \(dqcol1 ; <TAB> col2 ;\(dq ;  
 .Pp  
 will preserve the semicolon whitespace except for the last.  
 .It Fl dash  .It Fl dash
 A list offset by a dash (hyphen).  A list offset by a dash (hyphen).
 The head of list entries must be empty.  The head of list entries must be empty.
Line 1209  after the head as specified by the
Line 1223  after the head as specified by the
 .Fl width  .Fl width
 argument.  argument.
 .El  .El
   .Pp
   See also
   .Sx \&It .
 .Ss \&Bo  .Ss \&Bo
 Begins a block enclosed by square brackets.  Begins a block enclosed by square brackets.
 Does not have any head arguments.  Does not have any head arguments.
Line 1336  See also
Line 1353  See also
 and  and
 .Sx \&Dl .  .Sx \&Dl .
 .Ss \&Db  .Ss \&Db
   Start a debugging context.
   This macro is parsed, but generally ignored.
   Its syntax is as follows:
   .Pp
   .D1 Pf \. Sx \&Db Cm on | off
 .Ss \&Dc  .Ss \&Dc
 Closes a  Closes a
 .Sx \&Do  .Sx \&Do
Line 1345  Document date.
Line 1367  Document date.
 This is the mandatory first macro of any  This is the mandatory first macro of any
 .Nm  .Nm
 manual.  manual.
 Its calling syntax is as follows:  Its syntax is as follows:
 .Pp  .Pp
 .D1 \. Ns Sx \&Dd Cm date  .D1 Pf \. Sx \&Dd Cm date
 .Pp  .Pp
 The  The
 .Cm date  .Cm date
Line 1406  Document title.
Line 1428  Document title.
 This is the mandatory second macro of any  This is the mandatory second macro of any
 .Nm  .Nm
 file.  file.
 Its calling syntax is as follows:  Its syntax is as follows:
   .Bd -ragged -offset indent
   .Pf \. Sx \&Dt
   .Oo
   .Cm title
   .Oo
   .Cm section
   .Op Cm volume | arch
   .Oc
   .Oc
   .Ed
 .Pp  .Pp
 .D1 \. Ns Sx \&Dt Cm title section Op Cm volume | arch  
 .Pp  
 Its arguments are as follows:  Its arguments are as follows:
 .Bl -tag -width Ds -offset Ds  .Bl -tag -width Ds -offset Ds
 .It Cm title  .It Cm title
 The document's title (name).  The document's title (name), defaulting to
 This should be capitalised and is required.  .Qq UNKNOWN
   if unspecified.
   It should be capitalised.
 .It Cm section  .It Cm section
 The manual section.  The manual section.
 This may be one of  This may be one of
Line 1451  This may be one of
Line 1483  This may be one of
 or  or
 .Ar paper  .Ar paper
 .Pq paper .  .Pq paper .
 It is also required and should correspond to the manual's filename  It should correspond to the manual's filename suffix and defaults to
 suffix.  .Qq 1
   if unspecified.
 .It Cm volume  .It Cm volume
 This overrides the volume inferred from  This overrides the volume inferred from
 .Ar section .  .Ar section .
Line 1524  Examples:
Line 1557  Examples:
 .D1 \&.Dt FOO 1  .D1 \&.Dt FOO 1
 .D1 \&.Dt FOO 4 KM  .D1 \&.Dt FOO 4 KM
 .D1 \&.Dt FOO 9 i386  .D1 \&.Dt FOO 9 i386
 .D1 \&.Dt FOO 9 KM i386  
 .Pp  .Pp
 See also  See also
 .Sx \&Dd  .Sx \&Dd
Line 1561  and
Line 1593  and
 .Ss \&Ef  .Ss \&Ef
 .Ss \&Ek  .Ss \&Ek
 .Ss \&El  .Ss \&El
   Ends a list context started by
   .Sx \&Bl .
   .Pp
   See also
   .Sx \&Bl
   and
   .Sx \&It .
 .Ss \&Em  .Ss \&Em
 Denotes text that should be emphasised.  Denotes text that should be emphasised.
 Note that this is a presentation term and should not be used for  Note that this is a presentation term and should not be used for
Line 1600  is not provided, the document's name as stipulated in
Line 1639  is not provided, the document's name as stipulated in
 .Sx \&Nm  .Sx \&Nm
 is provided.  is provided.
 .Ss \&Fa  .Ss \&Fa
   Function argument.
   Its syntax is as follows:
   .Bd -ragged -offset indent
   .Pf \. Sx \&Fa
   .Op Cm argtype
   .Cm argname
   .Ed
   .Pp
   This may be invoked for names with or without the corresponding type.
   It is also used to specify the field name of a structure.
   Most often, the
   .Sx \&Fa
   macro is used in the
   .Em SYNOPSIS
   within
   .Sx \&Fo
   section when documenting multi-line function prototypes.
   If invoked with multiple arguments, the arguments are separated by a
   comma.
   Furthermore, if the following macro is another
   .Sx \&Fa ,
   the last argument will also have a trailing comma.
   .Pp
   Examples:
   .D1 \&.Fa \(dqconst char *p\(dq
   .D1 \&.Fa \(dqint a\(dq \(dqint b\(dq \(dqint c\(dq
   .D1 \&.Fa foo
   .Pp
   See also
   .Sx \&Fo .
 .Ss \&Fc  .Ss \&Fc
 .Ss \&Fd  .Ss \&Fd
   Historically used to document include files.
   This usage has been deprecated in favour of
   .Sx \&In .
   Do not use this macro.
   .Pp
   See also
   .Sx MANUAL STRUCTURE
   and
   .Sx \&In .
 .Ss \&Fl  .Ss \&Fl
 Command-line flag.  Command-line flag.
 Used when listing arguments to command-line utilities.  Used when listing arguments to command-line utilities.
Line 1621  Examples:
Line 1699  Examples:
 See also  See also
 .Sx \&Cm .  .Sx \&Cm .
 .Ss \&Fn  .Ss \&Fn
   A function name.
   Its syntax is as follows:
   .Bd -ragged -offset indent
   .Pf \. Ns Sx \&Fn
   .Op Cm functype
   .Cm funcname
   .Op Oo Cm argtype Oc Cm argname
   .Ed
   .Pp
   Function arguments are surrounded in parenthesis and
   are delimited by commas.
   If no arguments are specified, blank parenthesis are output.
   .Pp
   Examples:
   .D1 \&.Fn "int funcname" "int arg0" "int arg1"
   .D1 \&.Fn funcname "int arg0"
   .D1 \&.Fn funcname arg0
   .Bd -literal -offset indent -compact
   \&.Ft functype
   \&.Fn funcname
   .Ed
   .Pp
   See also
   .Sx MANUAL STRUCTURE
   and
   .Sx \&Ft .
 .Ss \&Fo  .Ss \&Fo
 .Ss \&Fr  Begin a function block.
   This is a multi-line version of
   .Sx \&Fn .
   Its syntax is as follows:
   .Pp
   .D1 Pf \. Sx \&Fo Cm funcname
   .Pp
   Invocations usually occur in the following context:
   .Bd -ragged -offset indent
   .Pf \. Sx \&Ft Cm functype
   .br
   .Pf \. Sx \&Fo Cm funcname
   .br
   .Pf \. Sx \&Fa Oo Cm argtype Oc Cm argname
   .br
   \.\.\.
   .br
   .Pf \. Sx \&Fc
   .Ed
   .Pp
   A
   .Sx \&Fo
   scope is closed by
   .Pp
   See also
   .Sx MANUAL STRUCTURE ,
   .Sx \&Fa ,
   .Sx \&Fc ,
   and
 .Ss \&Ft  .Ss \&Ft
   A function type.
   Its syntax is as follows:
   .Pp
   .D1 Pf \. Sx \&Ft Cm functype
   .Pp
   Examples:
   .D1 \&.Ft int
   .Bd -literal -offset indent -compact
   \&.Ft functype
   \&.Fn funcname
   .Ed
   .Pp
   See also
   .Sx MANUAL STRUCTURE ,
   .Sx \&Fn ,
   and
   .Sx \&Fo .
 .Ss \&Fx  .Ss \&Fx
 Format the FreeBSD version provided as an argument, or a default value  Format the FreeBSD version provided as an argument, or a default value
 if no argument is provided.  if no argument is provided.
Line 1644  and
Line 1793  and
 .Ss \&Hf  .Ss \&Hf
 .Ss \&Ic  .Ss \&Ic
 .Ss \&In  .Ss \&In
   An
   .Qq include
   file.
   In the
   .Em SYNOPSIS
   section (only if invoked as the line macro), the first argument is
   preceded by
   .Qq #include ,
   the arguments is enclosed in angled braces.
   .Pp
   Examples:
   .D1 \&.In sys/types
   .Pp
   See also
   .Sx MANUAL STRUCTURE .
 .Ss \&It  .Ss \&It
   A list item.
   The syntax of this macro depends on the list type.
   .Pp
   Lists
   of type
   .Fl hang ,
   .Fl ohang ,
   .Fl inset ,
   and
   .Fl diag
   have the following syntax:
   .Pp
   .D1 Pf \. Sx \&It Cm args
   .Pp
   Lists of type
   .Fl bullet ,
   .Fl dash ,
   .Fl enum ,
   .Fl hyphen
   and
   .Fl item
   have the following syntax:
   .Pp
   .D1 Pf \. Sx \&It
   .Pp
   with subsequent lines interpreted within the scope of the
   .Sx \&It
   until either a closing
   .Sx \&El
   or another
   .Sx \&It .
   .Pp
   The
   .Fl tag
   list has the following syntax:
   .Pp
   .D1 Pf \. Sx \&It Op Cm args
   .Pp
   Subsequent lines are interpreted as with
   .Fl bullet
   and family.
   The line arguments correspond to the list's left-hand side; body
   arguments correspond to the list's contents.
   .Pp
   The
   .Fl column
   list is the most complicated.
   Its syntax is as follows:
   .Pp
   .D1 Pf \. Sx \&It Op Cm args
   .Pp
   The
   .Cm args
   are phrases, a mix of macros and text corresponding to a line column,
   delimited by tabs or the special
   .Sq \&Ta
   pseudo-macro.
   Lines subsequent the
   .Sx \&It
   are interpreted within the scope of the last phrase.
   Calling the pseudo-macro
   .Sq \&Ta
   will open a new phrase scope (this must occur on a macro line to be
   interpreted as a macro).  Note that the tab phrase delimiter may only be
   used within the
   .Sx \&It
   line itself.
   Subsequent this, only the
   .Sq \&Ta
   pseudo-macro may be used to delimit phrases.
   Furthermore, note that quoted sections propogate over tab-delimited
   phrases on an
   .Sx \&It ,
   for example,
   .Pp
   .D1 .It \(dqcol1 ; <TAB> col2 ;\(dq \&;
   .Pp
   will preserve the semicolon whitespace except for the last.
   .Pp
   See also
   .Sx \&Bl .
 .Ss \&Lb  .Ss \&Lb
 Specify a library.  Specify a library.
 The calling syntax is as follows:  The syntax is as follows:
 .Pp  .Pp
 .D1 \. Ns Sx \&Lb Cm library  .D1 Pf \. Sx \&Lb Cm library
 .Pp  .Pp
 The  The
 .Cm library  .Cm library
Line 1671  Examples:
Line 1916  Examples:
 .Ss \&Li  .Ss \&Li
 .Ss \&Lk  .Ss \&Lk
 Format a hyperlink.  Format a hyperlink.
 The calling syntax is as follows:  Its syntax is as follows:
 .Pp  .Pp
 .D1 \. Ns Sx \&Lk Cm uri Op Cm name  .D1 Pf \. Sx \&Lk Cm uri Op Cm name
 .Pp  .Pp
 Examples:  Examples:
 .D1 \&.Lk http://bsd.lv "The BSD.lv Project"  .D1 \&.Lk http://bsd.lv "The BSD.lv Project"
Line 1684  See also
Line 1929  See also
 .Ss \&Lp  .Ss \&Lp
 .Ss \&Ms  .Ss \&Ms
 .Ss \&Mt  .Ss \&Mt
   Format a
   .Qq mailto:
   hyperlink.
   Its syntax is as follows:
   .Pp
   .D1 Pf \. Sx \&Mt Cm address
   .Pp
   Examples:
   .D1 \&.Mt discuss@manpages.bsd.lv
 .Ss \&Nd  .Ss \&Nd
 .Ss \&Nm  .Ss \&Nm
 .Ss \&No  .Ss \&No
Line 1713  Document operating system version.
Line 1967  Document operating system version.
 This is the mandatory third macro of  This is the mandatory third macro of
 any  any
 .Nm  .Nm
 file.  Its calling syntax is as follows:  file.
   Its syntax is as follows:
 .Pp  .Pp
 .D1 \. Ns Sx \&Os Op Cm system  .D1 Pf \. Sx \&Os Op Cm system
 .Pp  .Pp
 The optional  The optional
 .Cm system  .Cm system
Line 1787  The block macro may only contain
Line 2042  The block macro may only contain
 .Sx \&%Q ,  .Sx \&%Q ,
 .Sx \&%R ,  .Sx \&%R ,
 .Sx \&%T ,  .Sx \&%T ,
   .Sx \&%U ,
 and  and
 .Sx \&%V  .Sx \&%V
 child macros (at least one must be specified).  child macros (at least one must be specified).
Line 1841  and
Line 2097  and
 .Ss \&Va  .Ss \&Va
 .Ss \&Vt  .Ss \&Vt
 A variable type.  A variable type.
 This is also used for indicating global variables in the SYNOPSIS  This is also used for indicating global variables in the
   .Em SYNOPSIS
 section, in which case a variable name is also specified.  section, in which case a variable name is also specified.
 Note that it accepts  Note that it accepts
 .Sx Block partial-implicit  .Sx Block partial-implicit
 syntax when invoked as the first macro in the SYNOPSIS section, else it  syntax when invoked as the first macro in the
 accepts ordinary  .Em SYNOPSIS
   section, else it accepts ordinary
 .Sx In-line  .Sx In-line
 syntax.  syntax.
 .Pp  .Pp
Line 1856  which is used for function return types.
Line 2114  which is used for function return types.
 .Pp  .Pp
 Examples:  Examples:
 .D1 \&.Vt unsigned char  .D1 \&.Vt unsigned char
 .D1 \&.Vt extern const char * const sys_signame[] ;  .D1 \&.Vt extern const char * const sys_signame[] \&;
 .Pp  .Pp
 See also  See also
 .Sx \&Ft  .Sx MANUAL STRUCTURE
 and  and
 .Sx \&Va .  .Sx \&Va .
 .Ss \&Xc  .Ss \&Xc
Line 1872  since this limit has been lifted, the macro has been d
Line 2130  since this limit has been lifted, the macro has been d
 .Ss \&Xr  .Ss \&Xr
 Link to another manual  Link to another manual
 .Pq Qq cross-reference .  .Pq Qq cross-reference .
 Its calling syntax is  Its syntax is as follows:
 .Pp  .Pp
 .D1 \. Ns Sx \&Xr Cm name section  .D1 Pf \. Sx \&Xr Cm name section
 .Pp  .Pp
 The  The
 .Cm name  .Cm name
Line 1891  This behaviour is for compatibility with
Line 2149  This behaviour is for compatibility with
 .Pp  .Pp
 Examples:  Examples:
 .D1 \&.Xr mandoc 1  .D1 \&.Xr mandoc 1
 .D1 \&.Xr mandoc 1 ;  .D1 \&.Xr mandoc 1 \&;
 .D1 \&.Xr mandoc 1 \&Ns s behaviour  .D1 \&.Xr mandoc 1 \&Ns s behaviour
 .Ss \&br  .Ss \&br
 .Ss \&sp  .Ss \&sp
Line 1911  Heirloom troff, the other significant troff implementa
Line 2169  Heirloom troff, the other significant troff implementa
 .Pp  .Pp
 .Bl -dash -compact  .Bl -dash -compact
 .It  .It
   groff behaves inconsistently when encountering
   .Pf non- Sx \&Fa
   children of
   .Sx \&Fo
   regarding spacing between arguments.
   In mandoc, this is not the case: each argument is consistently followed
   by a single space and the trailing
   .Sq \&)
   suppresses prior spacing.
   .It
   groff behaves inconsistently when encountering
   .Sx \&Ft
   and
   .Sx \&Fn
   in the
   .Em SYNOPSIS :
   at times newline(s) are suppressed dependong on whether a prior
   .Sx \&Fn
   has been invoked.
   In mandoc, this is not the case.
   See
   .Sx \&Ft
   and
   .Sx \&Fn
   for the normalised behaviour.
   .It
   Historic groff does not break before an
   .Sx \&Fn
   when not invoked as the line macro in the
   .Em SYNOPSIS
   section.
   .It
   Historic groff formats the
   .Sx \&In
   badly: trailing arguments are trashed and
   .Em SYNOPSIS
   is not specially treated.
   .It
   groff does not accept the
   .Sq \&Ta
   pseudo-macro as a line macro.
   mandoc does.
   .It
 The comment syntax  The comment syntax
 .Sq \e."  .Sq \e."
 is no longer accepted.  is no longer accepted.
Line 1981  Some manuals use
Line 2282  Some manuals use
 incorrectly by following it with a reserved character and expecting the  incorrectly by following it with a reserved character and expecting the
 delimiter to render.  delimiter to render.
 This is not supported in mandoc.  This is not supported in mandoc.
 .It  
 In groff, the  
 .Sx \&Fo  
 macro only produces the first parameter.  
 This is not the case in mandoc.  
 .It  .It
 In groff, the  In groff, the
 .Sx \&Cd ,  .Sx \&Cd ,

Legend:
Removed from v.1.110  
changed lines
  Added in v.1.123

CVSweb