version 1.45, 2010/06/29 19:20:38 |
version 1.48, 2010/07/07 15:04:54 |
|
|
.\" $Id$ |
.\" $Id$ |
.\" |
.\" |
.\" Copyright (c) 2009-2010 Kristaps Dzonsons <kristaps@bsd.lv> |
.\" Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> |
|
.\" Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org> |
.\" |
.\" |
.\" Permission to use, copy, modify, and distribute this software for any |
.\" Permission to use, copy, modify, and distribute this software for any |
.\" purpose with or without fee is hereby granted, provided that the above |
.\" purpose with or without fee is hereby granted, provided that the above |
|
|
.Nd mdoc macro compiler library |
.Nd mdoc macro compiler library |
.Sh SYNOPSIS |
.Sh SYNOPSIS |
.In mandoc.h |
.In mandoc.h |
.In regs.h |
|
.In mdoc.h |
.In mdoc.h |
.Vt extern const char * const * mdoc_macronames; |
.Vt extern const char * const * mdoc_macronames; |
.Vt extern const char * const * mdoc_argnames; |
.Vt extern const char * const * mdoc_argnames; |
Line 257 an empty line will produce a zero-length string. |
|
Line 257 an empty line will produce a zero-length string. |
|
Multiple body parts are only found in invocations of |
Multiple body parts are only found in invocations of |
.Sq \&Bl \-column , |
.Sq \&Bl \-column , |
where a new body introduces a new phrase. |
where a new body introduces a new phrase. |
.Ss Badly nested blocks |
.Ss Badly-nested Blocks |
A special kind of node is available to end the formatting |
The ENDBODY node is available to end the formatting associated |
associated with a given block before the physical end of that block. |
with a given block before the physical end of that block. |
Such an ENDBODY node has a non-null |
It has a non-null |
.Va end |
.Va end |
field, is of the BODY |
field, is of the BODY |
.Va type , |
.Va type , |
|
|
TEXT end |
TEXT end |
.Ed |
.Ed |
.Pp |
.Pp |
Here, the formatting of the Ao block extends from TEXT ao to TEXT ac, |
Here, the formatting of the |
while the formatting of the Bo block extends from TEXT bo to TEXT bc, |
.Sq \&Ao |
rendering like this in |
block extends from TEXT ao to TEXT ac, |
|
while the formatting of the |
|
.Sq \&Bo |
|
block extends from TEXT bo to TEXT bc. |
|
It renders as follows in |
.Fl T Ns Cm ascii |
.Fl T Ns Cm ascii |
mode: |
mode: |
|
.Pp |
.Dl <ao [bo ac> bc] end |
.Dl <ao [bo ac> bc] end |
Support for badly nested blocks is only provided for backward |
.Pp |
|
Support for badly-nested blocks is only provided for backward |
compatibility with some older |
compatibility with some older |
.Xr mdoc 7 |
.Xr mdoc 7 |
implementations. |
implementations. |
Using them in new code is stronly discouraged: |
Using badly-nested blocks is |
Some frontends, in particular |
.Em strongly discouraged : |
.Fl T Ns Cm html , |
the |
are unable to render them in any meaningful way, |
.Fl T Ns Cm html |
many other |
and |
.Xr mdoc 7 |
.Fl T Ns Cm xhtml |
implementations do not support them, and even for those that do, |
front-ends are unable to render them in any meaningful way. |
the behaviour is not well-defined, in particular when using multiple |
Furthermore, behaviour when encountering badly-nested blocks is not |
levels of badly nested blocks. |
consistent across troff implementations, especially when using multiple |
|
levels of badly-nested blocks. |
.Sh EXAMPLES |
.Sh EXAMPLES |
The following example reads lines from stdin and parses them, operating |
The following example reads lines from stdin and parses them, operating |
on the finished parse tree with |
on the finished parse tree with |