=================================================================== RCS file: /cvs/mandoc/mandoc.1,v retrieving revision 1.39 retrieving revision 1.58 diff -u -p -r1.39 -r1.58 --- mandoc/mandoc.1 2009/10/03 15:08:09 1.39 +++ mandoc/mandoc.1 2010/04/12 19:27:22 1.58 @@ -1,4 +1,4 @@ -.\" $Id: mandoc.1,v 1.39 2009/10/03 15:08:09 kristaps Exp $ +.\" $Id: mandoc.1,v 1.58 2010/04/12 19:27:22 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: October 3 2009 $ +.Dd $Mdocdate: April 12 2010 $ .Dt MANDOC 1 .Os . @@ -26,13 +26,13 @@ . .Sh SYNOPSIS .Nm mandoc -.Op Fl f Ns Ar option... +.Op Fl V +.Op Fl f Ns Ar option .Op Fl m Ns Ar format -.Op Fl o Ns Ar option... +.Op Fl O Ns Ar option .Op Fl T Ns Ar output -.Op Fl V -.Op Fl W Ns Ar err... -.Op Ar infile... +.Op Fl W Ns Ar err +.Op Ar file... . . .Sh DESCRIPTION @@ -40,49 +40,58 @@ The .Nm utility formats .Ux -manual pages for display. The arguments are as follows: +manual pages for display. +The arguments are as follows: . .Bl -tag -width Ds -.It Fl f Ns Ar option... -Comma-separated compiler options. See +.It Fl f Ns Ar option +Comma-separated compiler options. +See .Sx Compiler Options for details. . .It Fl m Ns Ar format -Input format. See +Input format. +See .Sx Input Formats -for available formats. Defaults to -.Fl m Ns Ar andoc . +for available formats. +Defaults to +.Fl m Ns Cm andoc . . -.It Fl o Ns Ar format -Comma-separated output options. See +.It Fl O Ns Ar option +Comma-separated output options. +See .Sx Output Options for details. . .It Fl T Ns Ar output -Output format. See +Output format. +See .Sx Output Formats -for available formats. Defaults to -.Fl T Ns Ar ascii . +for available formats. +Defaults to +.Fl T Ns Cm ascii . . .It Fl V Print version and exit. . -.It Fl W Ns Ar err... -Comma-separated warning options. Use -.Fl W Ns Ar all +.It Fl W Ns Ar err +Comma-separated warning options. +Use +.Fl W Ns Cm all to print warnings, -.Fl W Ns Ar error +.Fl W Ns Cm error for warnings to be considered errors and cause utility -termination. Multiple +termination. +Multiple .Fl W arguments may be comma-separated, such as -.Fl W Ns Ar error,all . +.Fl W Ns Cm error , Ns Cm all . . -.It Ar infile... -Read input from zero or more -.Ar infile . -If unspecified, reads from stdin. If multiple files are specified, +.It Ar file +Read input from zero or more files. +If unspecified, reads from stdin. +If multiple files are specified, .Nm will halt with the first failed parse. .El @@ -95,56 +104,15 @@ reads or .Xr man 7 text from stdin, implying -.Fl m Ns Ar andoc , -and prints 78-column backspace-encoded output to stdout as if -.Fl T Ns Ar ascii -were provided. +.Fl m Ns Cm andoc , +and produces +.Fl T Ns Cm ascii +output. . .Pp .Ex -std mandoc . . -.Ss Punctuation and Spacing -If punctuation is set apart from words, such as in the phrase -.Dq to be \&, or not to be , -it's processed by -.Nm -according to the following rules: opening punctuation -.Po -.Sq \&( , -.Sq \&[ , -and -.Sq \&{ -.Pc -is not followed by a space; closing punctuation -.Po -.Sq \&. , -.Sq \&, , -.Sq \&; , -.Sq \&: , -.Sq \&? , -.Sq \&! , -.Sq \&) , -.Sq \&] -and -.Sq \&} -.Pc -is not preceded by whitespace. -. -.Pp -If the input is -.Xr mdoc 7 , -these rules are also applied to macro arguments when appropriate. -. -.Pp -White-space, in non-literal (normal) mode, is stripped from input and -replaced on output by a single space. Thus, if you wish to preserve multiple -spaces, they must be space-escaped or used in a literal display mode, e.g., -.Sq \&Bd \-literal -in -.Xr mdoc 7 . -. -. .Ss Input Formats The .Nm @@ -153,10 +121,11 @@ utility accepts and .Xr man 7 input with -.Fl m Ns Ar doc +.Fl m Ns Cm doc and -.Fl m Ns Ar an , -respectively. The +.Fl m Ns Cm an , +respectively. +The .Xr mdoc 7 format is .Em strongly @@ -166,7 +135,7 @@ should only be used for legacy manuals. . .Pp A third option, -.Fl m Ns Ar andoc , +.Fl m Ns Cm andoc , which is also the default, determines encoding on-the-fly: if the first non-comment macro is .Sq \&Dd @@ -181,12 +150,13 @@ parser is used. .Pp If multiple files are specified with -.Fl m Ns Ar andoc , -each has its file-type determined this way. If multiple files are +.Fl m Ns Cm andoc , +each has its file-type determined this way. +If multiple files are specified and -.Fl m Ns Ar doc +.Fl m Ns Cm doc or -.Fl m Ns Ar an +.Fl m Ns Cm an is specified, then this format is used exclusively. . . @@ -195,21 +165,36 @@ The .Nm utility accepts the following .Fl T -arguments: +arguments (see +.Sx OUTPUT ) : . .Bl -tag -width Ds -.It Fl T Ns Ar ascii +.It Fl T Ns Cm ascii Produce 7-bit ASCII output, backspace-encoded for bold and underline -styles. This is the default. +styles. +This is the default. +See +.Sx ASCII Output . . -.It Fl T Ns Ar html +.It Fl T Ns Cm html Produce strict HTML-4.01 output, with a sane default style. +See +.Sx HTML Output . . -.It Fl T Ns Ar tree +.It Fl T Ns Cm lint +Parse only: produce no output. +Implies +.Fl W Ns Cm all +and +.Fl f Ns Cm strict . +. +.It Fl T Ns Cm tree Produce an indented parse tree. . -.It Fl T Ns Ar lint -Parse only: produce no output. +.It Fl T Ns Cm xhtml +Produce strict XHTML-1.0 output, with a sane default style. +See +.Sx XHTML Output . .El . .Pp @@ -223,72 +208,210 @@ Default compiler behaviour may be overridden with the flag. . .Bl -tag -width Ds -.It Fl f Ns Ar ign-scope +.It Fl f Ns Cm ign-errors +When parsing multiple files, don't halt when one errors out. +Useful with +.Fl T Ns Cm lint +over a large set of manuals passed on the command line. +. +.It Fl f Ns Cm ign-escape +Ignore invalid escape sequences. +This is the default, but the option can be used to override an earlier +.Fl f Ns Cm strict . +. +.It Fl f Ns Cm ign-scope When rewinding the scope of a block macro, forces the compiler to ignore -scope violations. This can seriously mangle the resulting tree. +scope violations. +This can seriously mangle the resulting tree. .Pq mdoc only . -.It Fl f Ns Ar no-ign-escape -Don't ignore invalid escape sequences. +.It Fl f Ns Cm no-ign-chars +Do not ignore disallowed characters. . -.It Fl f Ns Ar no-ign-macro +.It Fl f Ns Cm no-ign-escape +Do not ignore invalid escape sequences. +. +.It Fl f Ns Cm no-ign-macro Do not ignore unknown macros at the start of input lines. . -.It Fl f Ns Ar no-ign-chars -Do not ignore disallowed characters. -. -.It Fl f Ns Ar strict +.It Fl f Ns Cm strict Implies -.Fl f Ns Ar no-ign-escape , -.Fl f Ns Ar no-ign-macro +.Fl f Ns Cm no-ign-escape , +.Fl f Ns Cm no-ign-macro , and -.Fl f Ns Ar no-ign-chars . -. -.It Fl f Ns Ar ign-errors -Don't halt when encountering parse errors. Useful with -.Fl T Ns Ar lint -over a large set of manuals passed on the command line. +.Fl f Ns Cm no-ign-chars . .El . +. .Ss Output Options For the time being, only .Fl T Ns Ar html -is the only mode with output options: +and +.Fl T Ns Ar xhtml +accept output options: .Bl -tag -width Ds -.It Fl o Ns Ar style=style.css -The file -.Ar style.css -is used for an external style-sheet. This must be a valid absolute or -relative URI. -.It Fl o Ns Ar man=fmt +.It Fl O Ns Cm includes Ns = Ns Ar fmt The string .Ar fmt , -for example, +for example, +.Ar ../src/%I.html , +is used as a template for linked header files (usually via the +.Sq \&In +macro). +Instances of +.Sq \&%I +are replaced with the include filename. +The default is not to present a +hyperlink. +.It Fl O Ns Cm man Ns = Ns Ar fmt +The string +.Ar fmt , +for example, .Ar ../html%S/%N.%S.html , is used as a template for linked manuals (usually via the .Sq \&Xr -macro). The default is -.Ar %N.%S.html . +macro). +Instances of +.Sq \&%N +and +.Sq %S +are replaced with the linked manual's name and section, respectively. +If no section is included, section 1 is assumed. +The default is not to +present a hyperlink. +.It Fl O Ns Cm style Ns = Ns Ar style.css +The file +.Ar style.css +is used for an external style-sheet. +This must be a valid absolute or +relative URI. .El . +. +.Sh OUTPUT +This section documents output details of +.Nm . +In general, output conforms to the traditional manual style of a header, +a body composed of sections and sub-sections, and a footer. +.Pp +The text style of output characters (non-macro characters, punctuation, +and white-space) is dictated by context. +.Pp +White-space is generally stripped from input. +This can be changed with +character escapes (specified in +.Xr mandoc_char 7 ) +or literal modes (specified in +.Xr mdoc 7 +and +.Xr man 7 ) . +.Pp +If non-macro punctuation is set apart from words, such as in the phrase +.Dq to be \&, or not to be , +it's processed by +.Nm , +regardless of output format, according to the following rules: opening +punctuation +.Po +.Sq \&( , +.Sq \&[ , +and +.Sq \&{ +.Pc +is not followed by a space; closing punctuation +.Po +.Sq \&. , +.Sq \&, , +.Sq \&; , +.Sq \&: , +.Sq \&? , +.Sq \&! , +.Sq \&) , +.Sq \&] +and +.Sq \&} +.Pc +is not preceded by white-space. +. +.Pp +If the input is +.Xr mdoc 7 , +however, these rules are also applied to macro arguments when appropriate. +. +. +.Ss ASCII Output +Output produced by +.Fl T Ns Cm ascii , +which is the default, is rendered in standard 7-bit ASCII documented in +.Xr ascii 7 . +.Pp +Font styles are applied by using back-spaced encoding such that an +underlined character +.Sq c +is rendered as +.Sq _ Ns \e[bs] Ns c , +where +.Sq \e[bs] +is the back-space character number 8. +Emboldened characters are rendered as +.Sq c Ns \e[bs] Ns c . +.Pp +The special characters documented in +.Xr mandoc_char 7 +are rendered best-effort in an ASCII equivalent. +.Pp +Output width is limited to 78 visible columns unless literal input lines +exceed this limit. +. +. +.Ss HTML Output +Output produced by +.Fl T Ns Cm html +conforms to HTML-4.01 strict. +.Pp +Font styles and page structure are applied using CSS2. +By default, no font style is applied to any text, +although CSS2 is hard-coded to format +the basic structure of output. +.Pp +The +.Pa example.style.css +file documents the range of styles applied to output and, if used, will +cause rendered documents to appear as they do in +.Fl T Ns Cm ascii . +.Pp +Special characters are rendered in decimal-encoded UTF-8. +. +. +.Ss XHTML Output +Output produced by +.Fl T Ns Cm xhtml +conforms to XHTML-1.0 strict. +.Pp +See +.Sx HTML Output +for details; beyond generating XHTML tags instead of HTML tags, these +output modes are identical. +. +. .Sh EXAMPLES To page manuals to the terminal: . .Pp -.D1 % mandoc \-Wall,error \-fstrict mandoc.1 2>&1 | less -.D1 % mandoc mandoc.1 mdoc.3 mdoc.7 | less +.D1 $ mandoc \-Wall,error \-fstrict mandoc.1 2\*(Gt&1 | less +.D1 $ mandoc mandoc.1 mdoc.3 mdoc.7 | less . .Pp -To produce HTML manuals with -.Pa http://localhost/ -as the base URI: +To produce HTML manuals with +.Ar style.css +as the style-sheet: .Pp -.D1 % mandoc \-Thtml -obase=http://localhost/ mdoc.7 > mdoc.7.html +.D1 $ mandoc \-Thtml -Ostyle=style.css mdoc.7 \*(Gt mdoc.7.html .Pp To check over a large set of manuals: . .Pp -.Dl % mandoc \-Tlint \-fign-errors `find /usr/src -name \e*\e.[1-9]` +.Dl $ mandoc \-Tlint \-fign-errors `find /usr/src -name \e*\e.[1-9]` . . .Sh COMPATIBILITY @@ -299,42 +422,43 @@ compatibility with Each input and output format is separately noted. . . -.Ss ASCII output +.Ss ASCII Compatibility .Bl -bullet -compact .It -The +The .Sq \e~ -special character doesn't produce expected behaviour in -.Fl T Ns Ar ascii . +special character doesn't produce expected behaviour in +.Fl T Ns Cm ascii . . .It -The +The .Sq \&Bd \-literal -and +and .Sq \&Bd \-unfilled macros of .Xr mdoc 7 in -.Fl T Ns Ar ascii +.Fl T Ns Cm ascii are synonyms, as are \-filled and \-ragged. . .It -In +In .Xr groff 1 , the .Sq \&Pa .Xr mdoc 7 macro does not underline when scoped under an .Sq \&It -in the FILES section. This behaves correctly in +in the FILES section. +This behaves correctly in .Nm . . .It -A list or display following +A list or display following the .Sq \&Ss .Xr mdoc 7 macro in -.Fl T Ns Ar ascii +.Fl T Ns Cm ascii does not assert a prior vertical break, just as it doesn't with .Sq \&Sh . . @@ -343,7 +467,7 @@ The .Sq \&na .Xr man 7 macro in -.Fl T Ns Ar ascii +.Fl T Ns Cm ascii has no effect. . .It @@ -358,11 +482,45 @@ retains spaces. .It Sentences are unilaterally monospaced. .El -.\" SECTION +. +. +.Ss HTML/XHTML Compatibility +.Bl -bullet -compact +.It +The +.Sq \efP +escape will revert the font to the previous +.Sq \ef +escape, not to the last rendered decoration, which is now dictated by +CSS instead of hard-coded. +It also will not span past the current scope, +for the same reason. +Note that in +.Sx ASCII Output +mode, this will work fine. +.It +The +.Xr mdoc 7 +.Sq \&Bl \-hang +and +.Sq \&Bl \-tag +list types render similarly (no break following overreached left-hand +side) due to the expressive constraints of HTML. +. +.It +The +.Xr man 7 +.Sq IP +and +.Sq TP +lists render similarly. +.El +. +. .Sh SEE ALSO +.Xr man 7 , .Xr mandoc_char 7 , -.Xr mdoc 7 , -.Xr man 7 +.Xr mdoc 7 . .Sh AUTHORS The @@ -370,11 +528,63 @@ The utility was written by .An Kristaps Dzonsons Aq kristaps@kth.se . . +. .Sh CAVEATS +The +.Fl T Ns Cm html +and +.Fl T Ns Cm xhtml +CSS2 styling used for +.Fl m Ns Cm doc +input lists does not render properly in older browsers, such as Internet +Explorer 6 and earlier. +. +.Pp In -.Fl T Ns Ar html , +.Fl T Ns Cm html +and +.Fl T Ns Cm xhtml , the maximum size of an element attribute is determined by .Dv BUFSIZ , -which is usually 1024 bytes. Be aware of this when setting long link -formats with -.Fl o Ns Ar man=fmt . +which is usually 1024 bytes. +Be aware of this when setting long link +formats such as +.Fl O Ns Cm style Ns = Ns Ar really/long/link . +. +.Pp +The +.Fl T Ns Cm html +and +.Fl T Ns Cm xhtml +output modes don't render the +.Sq \es +font size escape documented in +.Xr mdoc 7 +and +.Xr man 7 . +. +.Pp +Nesting elements within next-line element scopes of +.Fl m Ns Cm an , +such as +.Sq br +within an empty +.Sq B , +will confuse +.Fl T Ns Cm html +and +.Fl T Ns Cm xhtml +and cause them to forget the formatting of the prior next-line scope. +. +.Pp +The +.Sq i +macro in +.Fl m Ns Cm an +should italicise all subsequent text if a line argument is not provided. +This behaviour is not implemented. +. +The +.Sq \(aq +control character is an alias for the standard macro control character +and does not emit a line-break as stipulated in GNU troff.