=================================================================== RCS file: /cvs/mandoc/roff.7,v retrieving revision 1.4 retrieving revision 1.11 diff -u -p -r1.4 -r1.11 --- mandoc/roff.7 2010/05/17 02:01:05 1.4 +++ mandoc/roff.7 2010/06/27 16:36:22 1.11 @@ -1,4 +1,4 @@ -.\" $Id: roff.7,v 1.4 2010/05/17 02:01:05 kristaps Exp $ +.\" $Id: roff.7,v 1.11 2010/06/27 16:36:22 kristaps Exp $ .\" .\" Copyright (c) 2010 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: May 17 2010 $ +.Dd $Mdocdate: June 27 2010 $ .Dt ROFF 7 .Os .Sh NAME @@ -90,13 +90,51 @@ The syntax of this macro is the same as that of .Sx \&ig , except that a leading argument must be specified. It is ignored, as are its children. +.Ss \&ds +Define a string. +This macro is intended to have two arguments, +the name of the string to define and its content. +Currently, it is ignored including its arguments, +and the number of arguments is not checked. .Ss \&de1 The syntax of this macro is the same as that of .Sx \&ig , except that a leading argument must be specified. It is ignored, as are its children. +.Ss \&el +The +.Qq else +half of an if/else conditional. +Pops a result off the stack of conditional evaluations pushed by +.Sx \&ie +and uses it as its conditional. +If no stack entries are present (e.g., due to no prior +.Sx \&ie +calls) +then false is assumed. +The syntax of this macro is similar to +.Sx \&if +except that the conditional is missing. +.Ss \&ie +The +.Qq if +half of an if/else conditional. +The result of the conditional is pushed into a stack used by subsequent +invocations of +.Sx \&el , +which may be separated by any intervening input (or not exist at all). +Its syntax is equivalent to +.Sx \&if . .Ss \&if -Begins a conditional that always evaluates to false. +Begins a conditional. +Right now, the conditional evaluates to true +if and only if it starts with the letter +.Sy n , +indicating processing in +.Xr nroff 1 +style as opposed to +.Xr troff 1 +style. If a conditional is false, its children are not processed, but are syntactically interpreted to preserve the integrity of the input document. @@ -135,8 +173,19 @@ BODY... BODY .Ed .Pp -COND is a conditional (for the time being, this always evaluates to -false). +COND is a conditional statement. +roff allows for complicated conditionals; mandoc is much simpler. +At this time, mandoc supports only +.Sq n , +evaluating to true; +and +.Sq t , +.Sq e , +and +.Sq o , +evaluating to false. +All other invocations are read up to the next end of line or space and +evaluate as false. .Pp If the BODY section is begun by an escaped brace .Sq \e{ , @@ -169,7 +218,9 @@ macro is discarded. Furthermore, if an explicit closing sequence .Sq \e} is specified in a free-form line, the entire line is accepted within the -scope of the prior macro, not only the text preceding the close. +scope of the prior macro, not only the text preceding the close, with the +.Sq \e} +collapsing into a zero-width space. .Ss \&ig Ignore input. Accepts the following syntax: @@ -211,6 +262,49 @@ the subsequent invocation of .Sx \&if will first signify the end of comment, then be invoked as a macro. This behaviour really shouldn't be counted upon. +.Ss \&rm +Remove a request, macro or string. +This macro is intended to have one argument, +the name of the request, macro or string to be undefined. +Currently, it is ignored including its arguments, +and the number of arguments is not checked. +.Ss \&nr +Define a register. +A register is an arbitrary string value that defines some sort of state, +which influences parsing and/or formatting. +Its syntax is as follows: +.Pp +.D1 Pf \. Sx \&nr Cm name value +.Pp +The +.Cm value +may, at the moment, only be an integer. +The +.Cm name +is defined up to the next whitespace. +The following register +.Cm name +requests are recognised: +.Bl -tag -width Ds +.It Cm nS +If set to a positive integer value, certain +.Xr mdoc 7 +macros will behave as if they were defined in the +.Em SYNOPSIS +section. +Otherwise, this behaviour is unset (even if called within the +.Em SYNOPSIS +section itself). +Note that invoking a new +.Xr mdoc 7 +section will unset this value. +.El +.Ss \&tr +Output character translation. +This macro is intended to have one argument, +consisting of an even number of characters. +Currently, it is ignored including its arguments, +and the number of arguments is not checked. .Sh COMPATIBILITY This section documents compatibility between mandoc and other other troff implementations, at this time limited to GNU troff @@ -223,6 +317,12 @@ file re-write .Pq somewhere between 1.15 and 1.19 . .Pp .Bl -dash -compact +.It +The +.Cm nS +request to +.Sx \&nr +is only compatible with OpenBSD's groff. .It Historic groff did not accept white-space buffering the custom END tag for the