Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
LOWDOWN_ROFF_NEW(3)	     Library Functions Manual	     LOWDOWN_ROFF_NEW(3)

NAME
     lowdown_roff_new -- allocate a roff renderer for lowdown documents

LIBRARY
     liblowdown

SYNOPSIS
     #include <sys/queue.h>
     #include <stdio.h>
     #include <lowdown.h>

     void *
     lowdown_roff_new(const struct lowdown_opts *opts);

DESCRIPTION
     Allocates	a  roff  renderer using opts->oflags and opts->type, or zero and
     LOWDODN_MS, respectively, if opts is NULL.  These are  documented	in  low-
     down(3).	The  returned  pointer	may be used with multiple invocations of
     lowdown_roff_rndr(3) and must be freed with lowdown_roff_free(3).

     The   bits   recognised   in   opts->oflags   are	  LOWDOWN_ROFF_ENDNOTES,
     LOWDOWN_ROFF_GROFF,	    LOWDOWN_NOLINK,	      LOWDOWN_NORELLINK,
     LOWDOWN_ROFF_NUMBERED,	   LOWDOWN_SHORTLINK,	      LOWDOWN_SKIP_HTML,
     LOWDOWN_ROFF_MANPAGE, and LOWDOWN_STANDALONE.

     The  values  recognised  in  opts->type  are LOWDOWN_MAN, LOWDOWN_MDOC, and
     LOWDODN_MS: anything else triggers LOWDODN_MS.

     If LOWDOWN_ROFF_GROFF is set in LOWDOWN_MAN mode, macros from  the  man-ext
     package  as  well	as  the original man are used in output.  These are sup-
     ported by both groff and mandoc.  If in LOWDODN_MS mode, GNU extensions  to
     ms are used along with mspdf.  These are only supported by groff.

     LOWDOWN_ROFF_ENDNOTES delays printing of footnotes until the end of a docu-
     ment.  Does not affect LOWDOWN_MAN and LOWDOWN_MDOC documents, which struc-
     turally only support endnotes.

     The  allocated  rendered will use constant-width fonts "CR" (regular), "CB"
     (bold), "CI" (italic), and "CBI" (bold-italic).  Override the defaults with
     variables in the struct lowdown_opts_nroff structure.

     This function used to be called lowdown_nroff_new().

RETURN VALUES
     Returns a pointer to the renderer or NULL on memory failure.  The	returned
     pointer must be freed with lowdown_roff_free(3).

EXAMPLES
     The following parses b of length bsz and outputs in groff_ms(7) format.

	   struct lowdown_buf *out;
	   struct lowdown_doc *doc;
	   struct lowdown_node *n;
	   void *rndr;

	   if ((doc = lowdown_doc_new(NULL)) == NULL)
		   err(1, NULL);
	   if ((n = lowdown_doc_parse(doc, NULL, b, bsz, NULL)) == NULL)
		   err(1, NULL);
	   if ((out = lowdown_buf_new(256)) == NULL)
		   err(1, NULL);
	   if ((rndr = lowdown_roff_new(NULL)) == NULL)
		   err(1, NULL);
	   if (!lowdown_roff_rndr(out, rndr, n))
		   err(1, NULL);

	   fwrite(out->data, 1, out->size, stdout);

	   lowdown_roff_free(rndr);
	   lowdown_buf_free(out);
	   lowdown_node_free(n);
	   lowdown_doc_free(doc);

SEE ALSO
     lowdown(3), lowdown_roff_free(3), lowdown_roff_rndr(3),

     This  uses  both the original troff man macros for Version 7 AT&T UNIX, de-
     fined in man(7), and the man-ext groff extensions.  Both are implemented in
     mandoc.

     The mdoc macros are defined in mdoc(7).

     The troff ms macros are defined in groff_ms(7), with the mspdf groff exten-
     sions described in "Portable Document Format Publishing with GNU Troff"  by
     Keith Marshall.  Neither are implemented in mandoc.

CAVEATS
     The default constant-width fonts may not available for the formatter's out-
     put  device  (for	example, the terminal).  In this case, the formatter may
     raise a warning and ignore the font.

FreeBSD ports 15.quarterly	   $Mdocdate$		     LOWDOWN_ROFF_NEW(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=lowdown_roff_new&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help