-.\" $Id: mandoc.1,v 1.48 2009/11/16 09:52:47 kristaps Exp $
+.\" $Id: mandoc.1,v 1.56 2010/03/29 10:10:35 kristaps Exp $
.\"
.\" Copyright (c) 2009 Kristaps Dzonsons <kristaps@kth.se>
.\"
.\" 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 16 2009 $
+.Dd $Mdocdate: March 29 2010 $
.Dt MANDOC 1
.Os
.
Produce strict HTML-4.01 output, with a sane default style. See
.Sx HTML Output .
.
+.It Fl T Ns Ar xhtml
+Produce strict XHTML-1.0 output, with a sane default style. See
+.Sx XHTML Output .
+.
.It Fl T Ns Ar tree
Produce an indented parse tree.
.
.It Fl T Ns Ar lint
Parse only: produce no output.
+Implies
+.Fl W Ns Ar all
+and
+.Fl f Ns Ar strict .
.El
.
.Pp
.Fl f Ns Ar no-ign-chars .
.
.It Fl f Ns Ar ign-errors
-Don't halt when encountering parse errors. Useful with
+When parsing multiple files, don't halt when one errors out. Useful
+with
.Fl T Ns Ar lint
over a large set of manuals passed on the command line.
.El
.Ss Output Options
For the time being, only
.Fl T Ns Ar html
+and
+.Fl T Ns Ar xhtml
accepts output options:
.Bl -tag -width Ds
.It Fl O Ns Ar style=style.css
.It Fl O Ns Ar includes=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
.It Fl O Ns Ar man=fmt
The string
.Ar fmt ,
-for example,
+for example,
.Ar ../html%S/%N.%S.html ,
is used as a template for linked manuals (usually via the
.Sq \&Xr
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.
+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.
.
.
.Ss ASCII Output
-Output produced by
+Output produced by
.Fl T Ns Ar ascii ,
which is the default, is rendered in standard 7-bit ASCII documented in
.Xr ascii 7 .
.Ss HTML Output
Output produced by
.Fl T Ns Ar html
-comforms to HTML-4.01 strict.
+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
Special characters are rendered in decimal-encoded UTF-8.
.
.
+.Ss XHTML Output
+Output produced by
+.Fl T Ns Ar 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:
.
.Ss ASCII Compatibility
.Bl -bullet -compact
.It
-The
+The
.Sq \e~
-special character doesn't produce expected behaviour in
+special character doesn't produce expected behaviour in
.Fl T Ns Ar ascii .
.
.It
-The
+The
.Sq \&Bd \-literal
-and
+and
.Sq \&Bd \-unfilled
macros of
.Xr mdoc 7
are synonyms, as are \-filled and \-ragged.
.
.It
-In
+In
.Xr groff 1 ,
the
.Sq \&Pa
.El
.
.
-.Ss HTML Compatibility
+.Ss HTML/XHTML Compatibility
.Bl -bullet -compact
.It
The
.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
+scope, for the same reason. Note that in
.Sx ASCII Output
mode, this will work fine.
.It
.Sh CAVEATS
The
.Fl T Ns Ar html
+and
+.Fl T Ns Ar xhtml
CSS2 styling used for
.Fl m Ns Ar doc
-input lists does not render properly in brain-dead browsers, such as
-Internet Explorer 6 and earlier.
+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 Ar html
+and
+.Fl T Ns Ar 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, e.g.,
.Fl O Ns Ar style=really/long/link .
+.
.Pp
The
.Fl T Ns Ar html
-output mode doesn't render the
+and
+.Fl T Ns Ar 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 Ar an ,
+such as
+.Sq br
+within an empty
+.Sq B ,
+will confuse
+.Fl T Ns Ar html
+and
+.Fl T Ns Ar xhtml
+and cause them to forget the formatting of the prior next-line scope.
+.
+.Pp
+The
+.Sq i
+macro in
+.Fl m Ns Ar 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.