X-Git-Url: https://git.cameronkatri.com/mandoc.git/blobdiff_plain/c55c7c742e50a932784d8cd8689f4ad216fcc91f..160c4968c39b3806128f58311c70c5e0abbed96d:/man.7 diff --git a/man.7 b/man.7 index 92a1dc3b..738fbc3d 100644 --- a/man.7 +++ b/man.7 @@ -1,6 +1,6 @@ -.\" $Id: man.7,v 1.52 2009/11/12 08:21:05 kristaps Exp $ +.\" $Id: man.7,v 1.81 2010/08/06 17:07:11 schwarze Exp $ .\" -.\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se> +.\" Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above @@ -14,24 +14,19 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: November 12 2009 $ +.Dd $Mdocdate: August 6 2010 $ .Dt MAN 7 .Os -. -. .Sh NAME .Nm man .Nd man language reference -. -. .Sh DESCRIPTION The .Nm man language was historically used to format .Ux -manuals. This reference document describes its syntax, structure, and -usage. -. +manuals. +This reference document describes its syntax, structure, and usage. .Pp .Bf -emphasis Do not use @@ -41,43 +36,39 @@ to write your manuals. Use the .Xr mdoc 7 language, instead. -. .Pp -An +A .Nm document follows simple rules: lines beginning with the control character .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 prior macros: .Bd -literal -offset indent \&.SH Macro lines change control state. Other lines are interpreted within the current state. .Ed -. -. .Sh INPUT ENCODING .Nm documents may contain only graphable 7-bit ASCII characters, the -space character, and the tabs character. All manuals must have +space character, and the tab character. +All manuals must have .Ux line termination. -. .Pp Blank lines are acceptable; where found, the output will assert a vertical space. -. -. .Ss Comments Text following a -.Sq \e\*" , +.Sq \e\*q , whether in a macro or free-form text line, is ignored to the end of -line. A macro line with only a control character and comment escape, -.Sq \&.\e" , -is also ignored. Macro lines with only a control character and -optionally whitespace are stripped from input. -. -. +line. +A macro line with only a control character and comment escape, +.Sq \&.\e\*q , +is also ignored. +Macro lines with only a control character and optionally whitespace are +stripped from input. .Ss Special Characters Special characters may occur in both macro and free-form lines. Sequences begin with the escape character @@ -88,89 +79,66 @@ for two-character sequences; an open-bracket .Sq \&[ for n-character sequences (terminated at a close-bracket .Sq \&] ) ; -or a single one-character sequence. See +or a single one-character sequence. +See .Xr mandoc_char 7 -for a complete list. Examples include +for a complete list. +Examples include .Sq \e(em .Pq em-dash and .Sq \ee .Pq back-slash . -. -. .Ss Text Decoration Terms may be text-decorated using the .Sq \ef -escape followed by an indicator: B (bold), I, (italic), R (Roman), or P -(revert to previous mode): +escape followed by an indicator: B (bold), I (italic), R (Roman), or P +(revert to previous mode): .Pp .D1 \efBbold\efR \efIitalic\efP .Pp A numerical representation 3, 2, or 1 (bold, italic, and Roman, -respectively) may be used instead. A text decoration is only valid, if -specified in free-form text, until the next macro invocation; if -specified within a macro, it's only valid until the macro closes scope. -.Pp -Text may also be sized with the -.Sq \es -escape, whose syntax is one of -.Sq \es+-n -for one-digit numerals; -.Sq \es(+-nn -or -.Sq \es+-(nn -for two-digit numerals; and -.Sq \es[+-N] , -.Sq \es+-[N] , -.Sq \es'+-N' , -or -.Sq \es+-'N' -for arbitrary-digit numerals: -.Pp -.D1 \es+1bigger\es-1 -.D1 \es[+10]much bigger\es[-10] -.D1 \es+(10much bigger\es-(10 -.D1 \es+'100'much much bigger\es-'100' +respectively) may be used instead. +A text decoration is only valid, if specified in free-form text, until +the next macro invocation; if specified within a macro, it's only valid +until the macro closes scope. +Note that macros like +.Sx \&BR +open and close a font scope with each argument. .Pp -Both -.Sq \es -and +The .Sq \ef -attributes are forgotten when exiting a subsequent (or current) macro -invocation. -. -. +attribute is forgotten when entering or exiting a macro block. .Ss Whitespace -Unless 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 . -. -. +Whitespace consists of the space character. +In free-form lines, whitespace is preserved within a line; unescaped +trailing spaces are stripped from input (unless in a literal context). +Blank free-form lines, which may include spaces, are permitted and +rendered as an empty line. +.Pp +In macro lines, whitespace delimits arguments and is discarded. +If arguments are quoted, whitespace within the quotes is retained. .Ss Dates The .Sx \&TH macro is the only .Nm -macro that requires a date. The form for this date is the ISO-8601 +macro that requires a date. +The form for this date is the ISO-8601 standard .Cm YYYY-MM-DD . -. -. .Ss Scaling Widths Many macros support scaled widths for their arguments, such as stipulating a two-inch paragraph indentation with the following: .Bd -literal -offset indent \&.HP 2i .Ed -. .Pp The syntax for scaled widths is .Sq Li [+-]?[0-9]*.[0-9]*[:unit:]? , where a decimal must be preceded or proceeded by at least one digit. -Negative numbers, while accepted, are truncated to zero. The following -scaling units are accepted: -. +Negative numbers, while accepted, are truncated to zero. +The following scaling units are accepted: .Pp .Bl -tag -width Ds -offset indent -compact .It c @@ -209,7 +177,6 @@ Using anything other than or .Sq v is necessarily non-portable across output media. -. .Pp If a scaling unit is not provided, the numerical value is interpreted under the default rules of @@ -222,44 +189,50 @@ this differs from .Xr mdoc 7 , which, if a unit is not provided, will instead interpret the string as literal text. -. -. +.Ss Sentence Spacing +When composing a manual, make sure that sentences end at the end of +a line. +By doing so, front-ends will be able to apply the proper amount of +spacing after the end of sentence (unescaped) period, exclamation mark, +or question mark followed by zero or more non-sentence closing +delimiters +.Po +.Sq \&) , +.Sq \&] , +.Sq \&' , +.Sq \&" +.Pc . .Sh MANUAL STRUCTURE Each .Nm -document must contain contains at least the +document must contain the .Sx \&TH -macro describing the document's section and title. It may occur -anywhere in the document, although conventionally, it appears as the -first macro. -. +macro describing the document's section and title. +It may occur anywhere in the document, although conventionally it +appears as the first macro. .Pp Beyond .Sx \&TH , -at least one macro or text node must appear in the document. Documents -are generally structured as follows: +at least one macro or text node must appear in the document. +Documents are generally structured as follows: .Bd -literal -offset indent \&.TH FOO 1 2009-10-10 -\&. \&.SH NAME \efBfoo\efR \e(en a description goes here \&.\e\*q The next is for sections 2 & 3 only. \&.\e\*q .SH LIBRARY -\&. \&.SH SYNOPSIS \efBfoo\efR [\efB\e-options\efR] arguments... -\&. \&.SH DESCRIPTION The \efBfoo\efR utility processes files... -\&. \&.\e\*q .SH IMPLEMENTATION NOTES -\&.\e\*q The next is for sections 1 & 8 only. -\&.\e\*q .SH EXIT STATUS \&.\e\*q The next is for sections 2, 3, & 9 only. \&.\e\*q .SH RETURN VALUES \&.\e\*q The next is for sections 1, 6, 7, & 8 only. \&.\e\*q .SH ENVIRONMENT \&.\e\*q .SH FILES +\&.\e\*q The next is for sections 1 & 8 only. +\&.\e\*q .SH EXIT STATUS \&.\e\*q .SH EXAMPLES \&.\e\*q The next is for sections 1, 4, 6, 7, & 8 only. \&.\e\*q .SH DIAGNOSTICS @@ -277,23 +250,23 @@ The \efBfoo\efR utility processes files... .Pp The sections in a .Nm -document are conventionally ordered as they appear above. Sections -should be composed as follows: +document are conventionally ordered as they appear above. +Sections should be composed as follows: .Bl -ohang -offset indent .It Em NAME -The name(s) and a short description of the documented material. The -syntax for this is generally as follows: +The name(s) and a short description of the documented material. +The syntax for this is generally as follows: .Pp .D1 \efBname\efR \e(en description .It Em LIBRARY The name of the library containing the documented material, which is -assumed to be a function in a section 2 or 3 manual. For functions in -the C library, this may be as follows: +assumed to be a function in a section 2 or 3 manual. +For functions in the C library, this may be as follows: .Pp .D1 Standard C Library (libc, -lc) .It Em SYNOPSIS Documents the utility invocation syntax, function call syntax, or device -configuration. +configuration. .Pp For the first, utilities (sections 1, 6, and 8), this is generally structured as follows: @@ -308,64 +281,54 @@ And for the third, configurations (section 4): .Pp .D1 \&.B name* at cardbus ? function ? .Pp -Manuals not in these sections generally don't need a +Manuals not in these sections generally don't need a .Em SYNOPSIS . .It Em DESCRIPTION -This expands upon the brief, one-line description in +This expands upon the brief, one-line description in .Em NAME . It usually contains a break-down of the options (if documenting a command). .It Em IMPLEMENTATION NOTES -Implementation-specific notes should be kept here. This is useful when -implementing standard functions that may have side effects or notable -algorithmic implications. -.It Em EXIT STATUS -Command exit status for section 1, 6, and 8 manuals. This section is -the dual of -.Em RETURN VALUES , -which is used for functions. Historically, this information was -described in -.Em DIAGNOSTICS , -a practise that is now discouraged. -. +Implementation-specific notes should be kept here. +This is useful when implementing standard functions that may have side +effects or notable algorithmic implications. .It Em RETURN VALUES -This section is the dual of -.Em EXIT STATUS , -which is used for commands. It documents the return values of functions -in sections 2, 3, and 9. -. +This section documents the return values of functions in sections 2, 3, and 9. .It Em ENVIRONMENT Documents any usages of environment variables, e.g., .Xr environ 7 . -. .It Em FILES -Documents files used. It's helpful to document both the file and a -short description of how the file is used (created, modified, etc.). -. +Documents files used. +It's helpful to document both the file name and a short description of how +the file is used (created, modified, etc.). +.It Em EXIT STATUS +This section documents the command exit status for +section 1, 6, and 8 utilities. +Historically, this information was described in +.Em DIAGNOSTICS , +a practise that is now discouraged. .It Em EXAMPLES -Example usages. This often contains snippets of well-formed, -well-tested invocations. Make doubly sure that your examples work -properly! -. +Example usages. +This often contains snippets of well-formed, +well-tested invocations. +Make sure that examples work properly! .It Em DIAGNOSTICS -Documents error conditions. This is most useful in section 4 manuals. +Documents error conditions. +This is most useful in section 4 manuals. Historically, this section was used in place of .Em EXIT STATUS for manuals in sections 1, 6, and 8; however, this practise is discouraged. -. .It Em ERRORS Documents error handling in sections 2, 3, and 9. -. .It Em SEE ALSO -References other manuals with related topics. This section should exist -for most manuals. +References other manuals with related topics. +This section should exist for most manuals. .Pp .D1 \&.BR bar \&( 1 \&), .Pp Cross-references should conventionally be ordered first by section, then alphabetically. -. .It Em STANDARDS References any standards implemented or used, such as .Pp @@ -374,126 +337,121 @@ References any standards implemented or used, such as If not adhering to any standards, the .Em HISTORY section should be used. -. .It Em HISTORY -The history of any manual without a -.Em STANDARDS -section should be described in this section. -. +A brief history of the subject, including where support first appeared. .It Em AUTHORS -Credits to authors, if applicable, should appear in this section. -Authors should generally be noted by both name and an e-mail address. -. +Credits to the person or persons who wrote the code and/or documentation. +Authors should generally be noted by both name and email address. .It Em CAVEATS -Explanations of common misuses and misunderstandings should be explained +Common misuses and misunderstandings should be explained in this section. -. .It Em BUGS -Extant bugs should be described in this section. -. +Known bugs, limitations, and work-arounds should be described +in this section. .It Em SECURITY CONSIDERATIONS Documents any security precautions that operators should consider. -. .El -. -. .Sh MACRO SYNTAX -Macros are one to three three characters in length and begin with a -control character , +Macros are one to three characters in length and begin with a +control character, .Sq \&. , -at the beginning of the line. An arbitrary amount of whitespace may -sit between the control character and the macro name. Thus, the -following are equivalent: +at the beginning of the line. +The +.Sq \(aq +macro control character is also accepted. +An arbitrary amount of whitespace (spaces or tabs) may sit between the +control character and the macro name. +Thus, the following are equivalent: .Bd -literal -offset indent \&.PP \&.\ \ \ PP .Ed -. .Pp The .Nm -macros are classified by scope: line scope or block scope. Line -macros are only scoped to the current line (and, in some situations, -the subsequent line). Block macros are scoped to the current line and -subsequent lines until closed by another block macro. -. -. +macros are classified by scope: line scope or block scope. +Line macros are only scoped to the current line (and, in some +situations, the subsequent line). +Block macros are scoped to the current line and subsequent lines until +closed by another block macro. .Ss Line Macros Line macros are generally scoped to the current line, with the body -consisting of zero or more arguments. If a macro is scoped to the next -line and the line arguments are empty, the next line is used instead, -else the general syntax is used. Thus: +consisting of zero or more arguments. +If a macro is scoped to the next line and the line arguments are empty, +the next line, which must be text, is used instead. +Thus: .Bd -literal -offset indent \&.I foo .Ed -. .Pp is equivalent to .Sq \&.I foo . -If next-line macros are invoked consecutively, only the last is used; in -other words, if a next-line macro is preceded by a block macro, it is -ignored. +If next-line macros are invoked consecutively, only the last is used. +If a next-line macro is followed by a non-next-line macro, an error is +raised, except for +.Sx \&br , +.Sx \&sp , +and +.Sx \&na . +.Pp +The syntax is as follows: .Bd -literal -offset indent \&.YO \(lBbody...\(rB \(lBbody...\(rB .Ed -. -.Pp -.Bl -column -compact -offset indent "MacroX" "ArgumentsX" "ScopeXXXXX" -.It Em Macro Ta Em Arguments Ta Em Scope -.It Sx \&B Ta n Ta next-line -.It Sx \&BI Ta n Ta current -.It Sx \&BR Ta n Ta current -.It Sx \&DT Ta 0 Ta current -.It Sx \&I Ta n Ta next-line -.It Sx \&IB Ta n Ta current -.It Sx \&IR Ta n Ta current -.It Sx \&PD Ta n Ta current -.It Sx \&R Ta n Ta next-line -.It Sx \&RB Ta n Ta current -.It Sx \&RI Ta n Ta current -.It Sx \&SB Ta n Ta next-line -.It Sx \&SM Ta n Ta next-line -.It Sx \&TH Ta >1, <6 Ta current -.It Sx \&UC Ta n Ta current -.It Sx \&br Ta 0 Ta current -.It Sx \&fi Ta 0 Ta current -.It Sx \&i Ta n Ta current -.It Sx \&na Ta 0 Ta current -.It Sx \&nf Ta 0 Ta current -.It Sx \&r Ta 0 Ta current -.It Sx \&sp Ta 1 Ta current +.Pp +.Bl -column -compact -offset indent "MacroX" "ArgumentsX" "ScopeXXXXX" "CompatX" +.It Em Macro Ta Em Arguments Ta Em Scope Ta Em Notes +.It Sx \&AT Ta <=1 Ta current Ta \& +.It Sx \&B Ta n Ta next-line Ta \& +.It Sx \&BI Ta n Ta current Ta \& +.It Sx \&BR Ta n Ta current Ta \& +.It Sx \&DT Ta 0 Ta current Ta \& +.It Sx \&I Ta n Ta next-line Ta \& +.It Sx \&IB Ta n Ta current Ta \& +.It Sx \&IR Ta n Ta current Ta \& +.\" .It Sx \&PD Ta n Ta current Ta compat +.It Sx \&R Ta n Ta next-line Ta \& +.It Sx \&RB Ta n Ta current Ta \& +.It Sx \&RI Ta n Ta current Ta \& +.It Sx \&SB Ta n Ta next-line Ta \& +.It Sx \&SM Ta n Ta next-line Ta \& +.It Sx \&TH Ta >1, <6 Ta current Ta \& +.It Sx \&UC Ta <=1 Ta current Ta \& +.It Sx \&br Ta 0 Ta current Ta compat +.It Sx \&fi Ta 0 Ta current Ta compat +.It Sx \&i Ta n Ta current Ta compat +.It Sx \&in Ta 1 Ta current Ta compat +.It Sx \&na Ta 0 Ta current Ta compat +.It Sx \&nf Ta 0 Ta current Ta compat +.It Sx \&r Ta 0 Ta current Ta compat +.It Sx \&sp Ta 1 Ta current Ta compat +.\" .It Sx \&Sp Ta <1 Ta current Ta compat +.\" .It Sx \&Vb Ta <1 Ta current Ta compat +.\" .It Sx \&Ve Ta 0 Ta current Ta compat .El -. .Pp -The -.Sx \&PD , -.Sx \&RS , -.Sx \&RE , -.Sx \&UC , -.Sx \&br , -.Sx \&fi , -.Sx \&i , -.Sx \&na , -.Sx \&nf , -.Sx \&r , -and -.Sx \&sp -macros should not be used. They're included for compatibility. -. -. +Macros marked as +.Qq compat +are included for compatibility with the significant corpus of existing +manuals that mix dialects of roff. +These macros should not be used for portable +.Nm +manuals. .Ss Block Macros -Block macros are comprised of a head and body. Like for in-line macros, -the head is scoped to the current line and, in one circumstance, the -next line; the body is scoped to subsequent lines and is closed out by a -subsequent block macro invocation. +Block macros comprise a head and body. +As with in-line macros, the head is scoped to the current line and, in +one circumstance, the next line (the next-line stipulations as in +.Sx Line Macros +apply here as well). +.Pp +The syntax is as follows: .Bd -literal -offset indent \&.YO \(lBhead...\(rB \(lBhead...\(rB \(lBbody...\(rB .Ed -. .Pp The closure of body scope may be to the section, where a macro is closed by @@ -502,7 +460,7 @@ sub-section, closed by a section or .Sx \&SS ; part, closed by a section, sub-section, or .Sx \&RE ; -or paragraph, closed by a section, sub-section, part, +or paragraph, closed by a section, sub-section, part, .Sx \&HP , .Sx \&IP , .Sx \&LP , @@ -511,43 +469,42 @@ or paragraph, closed by a section, sub-section, part, or .Sx \&TP . No closure refers to an explicit block closing macro. -. -.Pp -.Bl -column "MacroX" "ArgumentsX" "Head ScopeX" "sub-sectionX" -compact -offset indent -.It Em Macro Ta Em Arguments Ta Em Head Scope Ta Em Body Scope -.It Sx \&HP Ta <2 Ta current Ta paragraph -.It Sx \&IP Ta <3 Ta current Ta paragraph -.It Sx \&LP Ta 0 Ta current Ta paragraph -.It Sx \&P Ta 0 Ta current Ta paragraph -.It Sx \&PP Ta 0 Ta current Ta paragraph -.It Sx \&RE Ta 0 Ta current Ta none -.It Sx \&RS Ta 1 Ta current Ta part -.It Sx \&SH Ta >0 Ta next-line Ta section -.It Sx \&SS Ta >0 Ta next-line Ta sub-section -.It Sx \&TP Ta n Ta next-line Ta paragraph +.Pp +As a rule, block macros may not be nested; thus, calling a block macro +while another block macro scope is open, and the open scope is not +implicitly closed, is syntactically incorrect. +.Pp +.Bl -column -compact -offset indent "MacroX" "ArgumentsX" "Head ScopeX" "sub-sectionX" "compatX" +.It Em Macro Ta Em Arguments Ta Em Head Scope Ta Em Body Scope Ta Em Notes +.It Sx \&HP Ta <2 Ta current Ta paragraph Ta \& +.It Sx \&IP Ta <3 Ta current Ta paragraph Ta \& +.It Sx \&LP Ta 0 Ta current Ta paragraph Ta \& +.It Sx \&P Ta 0 Ta current Ta paragraph Ta \& +.It Sx \&PP Ta 0 Ta current Ta paragraph Ta \& +.It Sx \&RE Ta 0 Ta current Ta none Ta compat +.It Sx \&RS Ta 1 Ta current Ta part Ta compat +.It Sx \&SH Ta >0 Ta next-line Ta section Ta \& +.It Sx \&SS Ta >0 Ta next-line Ta sub-section Ta \& +.It Sx \&TP Ta n Ta next-line Ta paragraph Ta \& .El -. +.Pp +Macros marked +.Qq compat +are as mentioned in +.Sx Line Macros . .Pp If a block macro is next-line scoped, it may only be followed by in-line -macros (excluding -.Sx \&DT , -.Sx \&PD , -.Sx \&TH , -.Sx \&UC , -.Sx \&br , -.Sx \&na , -.Sx \&sp , -.Sx \&nf , -and -.Sx \&fi ) . -. -. +macros for decorating text. .Sh REFERENCE This section is a canonical reference to all macros, arranged -alphabetically. For the scoping of individual macros, see +alphabetically. +For the scoping of individual macros, see .Sx MACRO SYNTAX . -. -. +.Ss \&AT +Sets the volume for the footer for compatibility with man pages from +.Tn AT&T UNIX +releases. +The optional arguments specify which release it is from. .Ss \&B Text is rendered in bold face. .Pp @@ -558,20 +515,20 @@ See also .Sx \&i , and .Sx \&r . -. -. .Ss \&BI -Text is rendered alternately in bold face and italic. Thus, +Text is rendered alternately in bold face and italic. +Thus, .Sq .BI this word and that causes .Sq this and .Sq and -to render in bold face, while +to render in bold face, while .Sq word and .Sq that -render in italics. Whitespace between arguments is omitted in output. +render in italics. +Whitespace between arguments is omitted in output. .Pp Examples: .Pp @@ -590,8 +547,6 @@ See also .Sx \&RI , and .Sx \&IR . -. -. .Ss \&BR Text is rendered alternately in bold face and roman (the default font). Whitespace between arguments is omitted in output. @@ -607,12 +562,9 @@ See also .Sx \&RI , and .Sx \&IR . -. -. .Ss \&DT -Has no effect. Included for compatibility. -. -. +Has no effect. +Included for compatibility. .Ss \&HP Begin a paragraph whose initial output line is left-justified, but subsequent output lines are indented, with the following syntax: @@ -635,8 +587,6 @@ See also .Sx \&PP , and .Sx \&TP . -. -. .Ss \&I Text is rendered in italics. .Pp @@ -647,11 +597,9 @@ See also .Sx \&i , and .Sx \&r . -. -. .Ss \&IB -Text is rendered alternately in italics and bold face. Whitespace -between arguments is omitted in output. +Text is rendered alternately in italics and bold face. +Whitespace between arguments is omitted in output. .Pp See .Sx \&BI @@ -664,8 +612,6 @@ See also .Sx \&RI , and .Sx \&IR . -. -. .Ss \&IP Begin an indented paragraph with the following syntax: .Bd -filled -offset indent @@ -676,14 +622,14 @@ Begin an indented paragraph with the following syntax: The .Cm width argument defines the width of the left margin and is defined by -.Sx Scaling Widths , +.Sx Scaling Widths . It's saved for later paragraph left-margins; if unspecified, the saved or default width is used. .Pp The .Cm head -argument is used as a leading term, flushed to the left margin. This is -useful for bulleted paragraphs and so on. +argument is used as a leading term, flushed to the left margin. +This is useful for bulleted paragraphs and so on. .Pp See also .Sx \&HP , @@ -692,8 +638,6 @@ See also .Sx \&PP , and .Sx \&TP . -. -. .Ss \&IR Text is rendered alternately in italics and roman (the default font). Whitespace between arguments is omitted in output. @@ -709,12 +653,11 @@ See also .Sx \&RB , and .Sx \&RI . -. -. .Ss \&LP -Begin an undecorated paragraph. The scope of a paragraph is closed by a -subsequent paragraph, sub-section, section, or end of file. The saved -paragraph left-margin width is re-set to the default. +Begin an undecorated paragraph. +The scope of a paragraph is closed by a subsequent paragraph, +sub-section, section, or end of file. +The saved paragraph left-margin width is reset to the default. .Pp See also .Sx \&HP , @@ -723,8 +666,6 @@ See also .Sx \&PP , and .Sx \&TP . -. -. .Ss \&P Synonym for .Sx \&LP . @@ -736,8 +677,6 @@ See also .Sx \&PP , and .Sx \&TP . -. -. .Ss \&PP Synonym for .Sx \&LP . @@ -749,8 +688,6 @@ See also .Sx \&P , and .Sx \&TP . -. -. .Ss \&R Text is rendered in roman (the default font). .Pp @@ -761,8 +698,6 @@ See also .Sx \&i , and .Sx \&r . -. -. .Ss \&RB Text is rendered alternately in roman (the default font) and bold face. Whitespace between arguments is omitted in output. @@ -778,13 +713,9 @@ See also .Sx \&RI , and .Sx \&IR . -. -. .Ss \&RE Explicitly close out the scope of a prior .Sx \&RS . -. -. .Ss \&RI Text is rendered alternately in roman (the default font) and italics. Whitespace between arguments is omitted in output. @@ -800,12 +731,10 @@ See also .Sx \&RB , and .Sx \&IR . -. -. .Ss \&RS -Begin a part setting the left margin. The left margin controls the -offset, following an initial indentation, to un-indented text such as -that of +Begin a part setting the left margin. +The left margin controls the offset, following an initial indentation, +to un-indented text such as that of .Sx \&PP . This has the following syntax: .Bd -filled -offset indent @@ -817,31 +746,23 @@ The .Cm width argument must conform to .Sx Scaling Widths . -If not specified, the saved or default width is used. -. -. +If not specified, the saved or default width is used. .Ss \&SB Text is rendered in small size (one point smaller than the default font) bold face. -. -. .Ss \&SH -Begin a section. The scope of a section is only closed by another -section or the end of file. The paragraph left-margin width is re-set -to the default. -. -. +Begin a section. +The scope of a section is only closed by another section or the end of +file. +The paragraph left-margin width is reset to the default. .Ss \&SM Text is rendered in small size (one point smaller than the default font). -. -. .Ss \&SS -Begin a sub-section. The scope of a sub-section is closed by a -subsequent sub-section, section, or end of file. The paragraph -left-margin width is re-set to the default. -. -. +Begin a sub-section. +The scope of a sub-section is closed by a subsequent sub-section, +section, or end of file. +The paragraph left-margin width is reset to the default. .Ss \&TH Sets the title of the manual page with the following syntax: .Bd -filled -offset indent @@ -850,17 +771,21 @@ Sets the title of the manual page with the following syntax: .Op Cm date Op Cm source Op Cm volume .Ed .Pp -At least the upper-case document title +At least the upper-case document .Cm title -and numeric manual section +and the manual .Cm section -arguments must be provided. The +arguments must be provided. +The .Cm date argument should be formatted as described in -.Sx Dates : -if it does not conform, the current date is used instead. The +.Sx Dates , +but will be printed verbatim if it is not. +If the date is not specified, the current date is used. +The .Cm source -string specifies the organisation providing the utility. The +string specifies the organisation providing the utility. +The .Cm volume string replaces the default rendered volume, which is dictated by the manual section. @@ -868,12 +793,11 @@ manual section. Examples: .Pp .D1 \&.TH CVS 5 "1992-02-12" GNU -. -. .Ss \&TP Begin a paragraph where the head, if exceeding the indentation width, is followed by a newline; if not, the body follows on the same line after a -buffer to the indentation width. Subsequent output lines are indented. +buffer to the indentation width. +Subsequent output lines are indented. The syntax is as follows: .Bd -filled -offset indent .Pf \. Sx \&TP @@ -894,30 +818,28 @@ See also .Sx \&P , and .Sx \&PP . -. -. -.Ss \&PD -Has no effect. Included for compatibility. -. -. +.\" . +.\" . +.\" .Ss \&PD +.\" Has no effect. Included for compatibility. +.\" . +.\" . .Ss \&UC -Has no effect. Included for compatibility. -. -. +Sets the volume for the footer for compatibility with man pages from +BSD releases. +The optional first argument specifies which release it is from. .Ss \&br -Breaks the current line. Consecutive invocations have no further effect. +Breaks the current line. +Consecutive invocations have no further effect. .Pp See also .Sx \&sp . -. -. .Ss \&fi End literal mode begun by .Sx \&nf . -. -. .Ss \&i -Italicise arguments. Synonym for +Italicise arguments. +Synonym for .Sx \&I . .Pp See also @@ -927,18 +849,23 @@ See also .Sx \&b , and .Sx \&r . -. -. +.Ss \&in +Indent relative to the current indentation: +.Pp +.D1 Pf \. Sx \&in Op Cm width +.Pp +If +.Cm width +is signed, the new offset is relative. +Otherwise, it is absolute. +This value is reset upon the next paragraph, section, or sub-section. .Ss \&na Don't align to the right margin. -. -. .Ss \&nf Begin literal mode: all subsequent free-form lines have their end of -line boundaries preserved. May be ended by +line boundaries preserved. +May be ended by .Sx \&fi . -. -. .Ss \&r Fonts and styles (bold face, italics) reset to roman (default font). .Pp @@ -949,8 +876,6 @@ See also .Sx \&b , and .Sx \&i . -. -. .Ss \&sp Insert vertical spaces into output with the following syntax: .Bd -filled -offset indent @@ -958,59 +883,80 @@ Insert vertical spaces into output with the following syntax: .Op Cm height .Ed .Pp -Insert +Insert .Cm height spaces, which must conform to .Sx Scaling Widths . If 0, this is equivalent to the .Sx \&br -macro. Defaults to 1, if unspecified. +macro. +Defaults to 1, if unspecified. .Pp See also .Sx \&br . -. -. +.\" .Ss \&Sp +.\" A synonym for +.\" .Sx \&sp +.\" .Cm 0.5v . +.\" . +.\" .Ss \&Vb +.\" A synonym for +.\" .Sx \&nf . +.\" Accepts an argument (the height of the formatted space) which is +.\" disregarded. +.\" . +.\" .Ss \&Ve +.\" A synonym for +.\" .Sx \&fi . +.\" . .Sh COMPATIBILITY -This section documents compatibility with other roff implementations, at -this time limited to -.Xr groff 1 . +This section documents areas of questionable portability between +implementations of the +.Nm +language. .Pp .Bl -dash -compact .It -The -.Xr groff 1 -.Sx \&i -macro will italicise all subsequent text if a line argument is not -provided. This behaviour is not implemented. +The \es (font size), \em (font colour), and \eM (font filling colour) +font decoration escapes are all discarded in mandoc. .It -In quoted literals, groff allowed pair-wise double-quotes to produce a -standalone double-quote in formatted output. This idiosyncratic -behaviour is no longer applicable. +In quoted literals, GNU troff allowed pair-wise double-quotes to produce +a standalone double-quote in formatted output. +It is not known whether this behaviour is exhibited by other formatters. .It The .Sx \&sp -macro does not accept negative numbers. +macro does not accept negative values in mandoc. +In GNU troff, this would result in strange behaviour. .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. +The +.Sq \(aq +macro control character, in GNU troff (and prior troffs) suppresses a +newline before macro output; in mandoc, it is an alias for the standard +.Sq \&. +control character. .El -. -. .Sh SEE ALSO .Xr mandoc 1 , .Xr mandoc_char 7 -. -. -.Sh AUTHORS +.Sh HISTORY The .Nm +language first appeared as a macro package for the roff typesetting +system in +.At v7 . +It was later rewritten by James Clark as a macro package for groff. +The stand-alone implementation that is part of the +.Xr mandoc 1 +utility written by Kristaps Dzonsons appeared in +.Ox 4.6 . +.Sh AUTHORS +This +.Nm reference was written by -.An Kristaps Dzonsons Aq kristaps@kth.se . -. -. +.An Kristaps Dzonsons Aq kristaps@bsd.lv . .Sh CAVEATS -Do not use this language. Use +Do not use this language. +Use .Xr mdoc 7 , instead. -.