Provided by: liblowdown-dev_1.1.0-1_amd64 bug

NAME

       lowdown — simple markdown translator library

LIBRARY

       library “liblowdown”

SYNOPSIS

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

       struct lowdown_meta
       struct lowdown_node
       struct lowdown_opts

DESCRIPTION

       This library parses lowdown(5) into various output formats.

       The  library  consists first of a high-level interface consisting of lowdown_buf(3), lowdown_buf_diff(3),
       lowdown_file(3), and lowdown_file_diff(3).

       The high-level functions interface with low-level functions that perform parsing and  formatting.   These
       consist  of  lowdown_doc_new(3),  lowdown_doc_parse(3),  and  lowdown_doc_free(3)  for parsing lowdown(5)
       documents into an abstract syntax tree.

       The front-end functions for freeing, allocation, and rendering are as follows.

          HTML5:
           lowdown_html_free(3)
           lowdown_html_new(3)
           lowdown_html_rndr(3)

          gemini:
           lowdown_gemini_free(3)
           lowdown_gemini_new(3)
           lowdown_gemini_rndr(3)

          LaTeX:
           lowdown_latex_free(3)
           lowdown_latex_new(3)
           lowdown_latex_rndr(3)

          OpenDocument:
           lowdown_odt_free(3)
           lowdown_odt_new(3)
           lowdown_odt_rndr(3)

          roff:
           lowdown_nroff_free(3)
           lowdown_nroff_new(3)
           lowdown_nroff_rndr(3)

          UTF-8 ANSI terminal:
           lowdown_term_free(3)
           lowdown_term_new(3)
           lowdown_term_rndr(3)

          debugging:
           lowdown_tree_rndr(3)

       To compile and link, use pkg-config(1):

       % cc `pkg-config --cflags lowdown` -c -o sample.o sample.c
       % cc -o sample sample.o `pkg-config --libs lowdown`

   Pledge Promises
       The lowdown library is built to operate in security-sensitive environments, such as those using pledge(2)
       on OpenBSD.  The only promise required  is  stdio  for  lowdown_file_diff(3)  and  lowdown_file(3):  both
       require access to the stream for reading input.

TYPES

       All lowdown functions use one or more of the following structures.

       The  main  structure  for  configuring  parsing  and output is struct lowdown_opts.  It has the following
       fields:

       enum lowdown_type type
               The output medium:

               LOWDOWN_HTML
                       HTML5
               LOWDOWN_LATEX
                       LaTeX
               LOWDOWN_MAN
                       roff -man macros
               LOWDOWN_FODT
                       “flat” OpenDocument
               LOWDOWN_TERM
                       ANSI-compatible UTF-8 terminal output
               LOWDOWN_GEMINI
                       Gemini format
               LOWDOWN_NROFF
                       roff -ms macros
               LOWDOWN_TREE
                       syntax tree (debugging)

       unsigned int feat
               Parse-time features.  This bit-field may have the following bits OR'd:

               LOWDOWN_ATTRS
                       Parse PHP extra link, header, and image attributes.
               LOWDOWN_AUTOLINK
                       Parse http, https, ftp, mailto, and relative links or link fragments.
               LOWDOWN_CALLOUTS
                       Parse MDN/GFM callouts (“admonitions”).
               LOWDOWN_COMMONMARK
                       Tighten input parsing to the CommonMark specification.  This also uses the first  ordered
                       list  value  instead  of  starting  all  lists  at one.  This feature is experimental and
                       incomplete.
               LOWDOWN_DEFLIST
                       Parse PHP extra definition lists.  This is currently constrained to single-key lists.
               LOWDOWN_FENCED
                       Parse GFM fenced (language-specific) code blocks.
               LOWDOWN_FOOTNOTES
                       Parse MMD style footnotes.  This only supports the referenced  footnote  style,  not  the
                       “inline” style.
               LOWDOWN_HILITE
                       Parse  highlit  sequences.   This  are  disabled by default because it may be erroneously
                       interpreted as section headers.
               LOWDOWN_IMG_EXT
                       Deprecated.  Use LOWDOWN_ATTRS instead.
               LOWDOWN_MANTITLE
                       Recognise  manpage  titles  in  Pandoc  metadata  title  lines.    Only   applicable   if
                       LOWDOWN_METADATA  is  also  provided.   Manpages titles must begin with a non-empty title
                       followed by an open parenthesis, digit or “n”, optional letters  after,  then  a  closing
                       parenthesis.   This  may  be  optionally  followed  by a source and, if a vertical bar is
                       detected, the content after as the volume.  These are passed  to  the  renderers  as  the
                       title,  volume,  and optionally source and volume metadata key-value pairs.  The original
                       title is not recoverable.
               LOWDOWN_MATH
                       Parse mathematics equations.
               LOWDOWN_METADATA
                       Parse in-document metadata.
               LOWDOWN_NOCODEIND
                       Do not parse indented content as code blocks.
               LOWDOWN_NOINTEM
                       Do not parse emphasis within words.
               LOWDOWN_STRIKE
                       Parse strikethrough sequences.
               LOWDOWN_SUPER
                       Parse super-scripts.  This accepts foo^bar^ GFM super-scripts.
               LOWDOWN_SUPER_SHORT
                       If LOWDOWN_SUPER is enabled, instead of  the  GFM  style,  accept  the  “short”  form  of
                       superscript.   This  accepts  foo^bar,  which  puts  the  parts following the caret until
                       whitespace in superscripts; or foo^(bar), which puts only the parts in parenthesis.
               LOWDOWN_TABLES
                       Parse GFM tables.
               LOWDOWN_TASKLIST
                       Parse GFM task list items.

       unsigned int oflags
               Output-time features.  Bit values are specific to the type and are not guaranteed to be  globally
               unique.

               For all types:

               LOWDOWN_SMARTY
                       Don't use smart typography formatting.
               LOWDOWN_STANDALONE
                       Emit  a full document instead of a document fragment.  This envelope is largely populated
                       from metadata if LOWDOWN_METADATA was provided as an  option  or  as  given  in  meta  or
                       metaovr.

               For LOWDOWN_HTML:

               LOWDOWN_HTML_CALLOUT_MDN, LOWDOWN_HTML_CALLOUT_GFM
                       Output MDN and/or GFM-style callout syntax.
               LOWDOWN_HTML_ESCAPE
                       If  LOWDOWN_HTML_SKIP_HTML  has  not  been  set,  escapes  in-document HTML so that it is
                       rendered as opaque text.
               LOWDOWN_HTML_HARD_WRAP
                       Retain line-breaks within paragraphs.
               LOWDOWN_HTML_HEAD_IDS
                       Have an identifier written with each header element consisting of an HTML-escaped version
                       of the header contents.
               LOWDOWN_HTML_NUM_ENT
                       Convert, when possible, HTML entities to their numeric form.  If not  set,  the  entities
                       are used as given in the input.
               LOWDOWN_HTML_OWASP
                       When  escaping  text,  be  extra  paranoid  in  following the OWASP suggestions for which
                       characters to escape.
               LOWDOWN_HTML_SKIP_HTML
                       Do not render in-document HTML at all.
               LOWDOWN_HTML_TITLEBLOCK
                       If used with LOWDOWN_STANDALONE, output a Pandoc-style title block.  This  is  a  <header
                       id="title-block-header">  element  right after the opening <body> containing elements for
                       specified title, author(s), and date.  These are <h1>  and  <p>  elements,  respectively,
                       with  classes  set  to  what's being output (title, etc.).  At least one of these must be
                       specified for the title block to be output.

               For LOWDOWN_GEMINI, there are several flags for controlling link placement.   By  default,  links
               (images, autolinks, and links) are queued when specified in-line then emitted in a block sequence
               after the nearest block node.  (See “ABSTRACT SYNTAX TREE”.)

               LOWDOWN_GEMINI_LINK_END
                       Emit  the  queue  of  links at the end of the document instead of after the nearest block
                       node.
               LOWDOWN_GEMINI_LINK_IN
                       Render all links within the flow of text.  This will cause breakage  when  nested  links,
                       such  as images within links, links in blockquotes, etc.  It should not be used unless in
                       carefully crafted documents.
               LOWDOWN_GEMINI_LINK_NOREF
                       Do not format link labels.  Takes precedence over LOWDOWN_GEMINI_LINK_ROMAN.
               LOWDOWN_GEMINI_LINK_ROMAN
                       When formatting link labels,  use  lower-case  Roman  numerals  instead  of  the  default
                       lowercase hexavigesimal (i.e., “a”, “b”, ..., “aa”, “ab”, ...).
               LOWDOWN_GEMINI_METADATA
                       Print  metadata  as the canonicalised key followed by a colon then the value, each on one
                       line (newlines replaced by spaces).   The  metadata  block  is  terminated  by  a  double
                       newline.  If there is no metadata, this does nothing.

               There  may  only  be  one  of  LOWDOWN_GEMINI_LINK_END  or  LOWDOWN_GEMINI_LINK_IN.   If both are
               specified, the latter is unset.

               For LOWDOWN_FODT:

               LOWDOWN_ODT_SKIP_HTML
                       Do not render in-document HTML at all.  Text within HTML elements remains.

               For LOWDOWN_LATEX:

               LOWDOWN_LATEX_NUMBERED
                       Use the default numbering scheme for sections, subsections, etc.  If not specified, these
                       are inhibited.
               LOWDOWN_LATEX_SKIP_HTML
                       Do not render in-document HTML at all.  Text within HTML elements remains.

               For LOWDOWN_MAN and LOWDOWN_NROFF:

               LOWDOWN_NROFF_GROFF
                       Use GNU extensions (i.e., for groff(1)) when rendering output.  The groff arguments  must
                       include  -mpdfmark  for  formatting  links  with LOWDOWN_MAN or -mspdf instead of -ms for
                       LOWDOWN_NROFF.  Applies to the LOWDOWN_MAN and LOWDOWN_NROFF output types.
               LOWDOWN_NROFF_NOLINK
                       Don't show links at all if they have embedded text.  Applies to images and regular links.
                       Only in LOWDOWN_MAN or when LOWDOWN_NROFF_GROFF is not specified.
               LOWDOWN_NROFF_NUMBERED
                       Use numbered sections if LOWDOWON_NROFF_GROFF is not  specified.   Only  applies  to  the
                       LOWDOWN_NROFF output type.
               LOWDOWN_NROFF_SHORTLINK
                       Render  link  URLs in short form.  Applies to images, autolinks, and regular links.  Only
                       in LOWDOWN_MAN or when LOWDOWN_NROFF_GROFF is not specified.
               LOWDOWN_NROFF_SKIP_HTML
                       Do not render in-document HTML at all.  Text within HTML elements remains.

               For LOWDOWN_TERM:

               LOWDOWN_TERM_ALL_META
                       If LOWDOWN_STANDALONE is specified, output  all  metadata  instead  of  just  the  title,
                       author, and date.
               LOWDOWN_TERM_NOANSI
                       Don't apply ANSI style codes at all.  This implies LOWDOWN_TERM_NOCOLOUR.
               LOWDOWN_TERM_NOCOLOUR
                       Don't  apply  ANSI colour codes.  This will still show underline, bold, etc.  This should
                       not be used in difference mode, as the output will make no sense.
               LOWDOWN_TERM_NOLINK
                       Don't show links at all.  Applies to images and regular links: autolinks are still shown.
                       This may be combined with LOWDOWN_TERM_SHORTLINK to also shorten autolinks.
               LOWDOWN_TERM_SHORTLINK
                       Render link URLs in short form.  Applies to images, autolinks, and regular  links.   This
                       may be combined with LOWDOWN_TERM_NOLINK to only show shortened autolinks.

       size_t maxdepth
               The  maximum  parse depth before the parser exits.  Most documents will have a parse depth in the
               single digits.

       size_t cols
               For LOWDOWN_TERM, the “soft limit” for width of terminal output not including margins.  If  zero,
               80 shall be used.

       size_t hmargin
               For LOWDOWN_TERM, the left margin (space characters).

       size_t vmargin
               For LOWDOWN_TERM, the top/bottom margin (newlines).

       struct lowdown_opts_nroff nroff
               If  type  is LOWDOWN_MAN or LOWDOWN_NROFF, this contains constant-width font variants: const char
               *cr for roman constant-width, const char *cb for bold, const char *ci for italic, and const  char
               *cbi for bold-italic.  If any of these are NULL, they default to their constant-width variants.

       struct lowdown_opts_odt odt
               If  type is LOWDOWN_FODT, this contains const char *sty, which is either NULL or the OpenDocument
               styles used when creating standalone documents.  If NULL, the default styles are used.

       char **meta
               An array of metadata key-value pairs or NULL.  Each pair must appear as if provided on  one  line
               (or multiple lines) of the input, including the terminating newline character.  If not consisting
               of  a  valid pair (e.g., no newline, no colon), then it is ignored.  When processed, these values
               are overridden by those in the document  (if  LOWDOWN_METADATA  is  specified)  or  by  those  in
               metaovr.

       size_t metasz
               Number of pairs in metaovr.

       char **metaovr
               See  meta.   The difference is that metaovr is applied after meta and in-document metadata, so it
               overrides prior values.

       size_t metaovrsz
               Number of pairs in metaovr.

       Parsed metadata is held in key-value struct lowdown_meta pairs, or collectively as struct  lowdown_metaq,
       if LOWDOWN_METADATA is set in feat.  The former structure consists of the following fields:

       char *key
               The  metadata  key  in  its  canonical  form:  lowercase  alphanumerics,  hyphen, and underscore.
               Whitespace is removed and other characters replaced by a question mark.

       char *value
               The metadata value.  This may be an empty string.

       The abstract syntax tree is encoded in struct lowdown_node, which consists of the following.

       enum lowdown_rndrt type
               The node type, using HTML5 output as an illustration:

               LOWDOWN_BLOCKCODE
                       A block-level snippet of code described by <pre><code>.
               LOWDOWN_BLOCKHTML
                       A block-level snippet of HTML.  This is simply opaque HTML content.
               LOWDOWN_BLOCKQUOTE
                       A block-level quotation described by <blockquote>.
               LOWDOWN_CODESPAN
                       An inline-level snippet of code described by <code>.
               LOWDOWN_DEFINITION
                       A definition list described by <dl>.
               LOWDOWN_DEFINITION_DATA
                       Definition data described by <dd>.
               LOWDOWN_DEFINITION_TITLE
                       Definition title described by <dt>.
               LOWDOWN_DOC_HEADER
                       Container for metadata described by <head>.
               LOWDOWN_DOUBLE_EMPHASIS
                       Bold (or otherwise notable) content described by <strong>.
               LOWDOWN_EMPHASIS
                       Italic (or otherwise notable) content described by <em>.
               LOWDOWN_ENTITY
                       Named or numeric HTML entity.
               LOWDOWN_FOOTNOTE
                       Footnote content.
               LOWDOWN_HEADER
                       A block-level header described by one of <h1> through <h6>.
               LOWDOWN_HIGHLIGHT
                       Marked test described by <mark>.
               LOWDOWN_HRULE
                       A horizontal line described by <hr>.
               LOWDOWN_IMAGE
                       An image described by <img>.
               LOWDOWN_LINEBREAK
                       A hard line-break within a block context described by <br>.
               LOWDOWN_LINK
                       A link to external media described by <a>.
               LOWDOWN_LINK_AUTO
                       Like LOWDOWN_LINK, except inferred from text content.
               LOWDOWN_LIST
                       A list enclosure described by <ul> or <ol>.
               LOWDOWN_LISTITEM
                       A list item described by <li>.
               LOWDOWN_MATH_BLOCK
                       A snippet of mathematical text in LaTeX format described within \[xx\] or  \(xx\).   This
                       is usually (in HTML) externally handled by a JavaScript renderer.
               LOWDOWN_META
                       Meta-data keys and values.  These are described by elements in <head>.
               LOWDOWN_NORMAL_TEXT
                       Normal text content.
               LOWDOWN_PARAGRAPH
                       A block-level paragraph described by <p>.
               LOWDOWN_RAW_HTML
                       An inline of raw HTML.  (Only if configured during parse.)
               LOWDOWN_ROOT
                       The  root  of the document.  This is always the topmost node, and the only node where the
                       parent field is NULL.
               LOWDOWN_STRIKETHROUGH
                       Content struck through.  Described by <del>.
               LOWDOWN_SUBSCRIPT, LOWDOWN_SUPERSCRIPT
                       A subscript or superscript described by <sub> or <sup>, respectively.
               LOWDOWN_TABLE_BLOCK
                       A table block described by <table>.
               LOWDOWN_TABLE_BODY
                       A table body section described by <tbody>.
               LOWDOWN_TABLE_CELL
                       A table cell described by <td>, or <th> if in the header.
               LOWDOWN_TABLE_HEADER
                       A table header section described by <thead>.
               LOWDOWN_TABLE_ROW
                       A table row described by <tr>.
               LOWDOWN_TRIPLE_EMPHASIS
                       Combination of LOWDOWN_EMPHASIS and LOWDOWN_DOUBLE_EMPHASIS.

       size_t id
               An identifier unique within the document.  This can be used as a table index since the number  is
               assigned from a monotonically increasing point during the parse.

       struct lowdown_node *parent
               The parent of the node, or NULL at the root.

       enum lowdown_chng chng
               Change    tracking:    whether    this   node   was   inserted   (LOWDOWN_CHNG_INSERT),   deleted
               (LOWDOWN_CHNG_DELETE), or neither (LOWDOWN_CHNG_NONE).

       struct lowdown_nodeq children
               A possibly-empty list of child nodes.

       <anon union>
               An anonymous union of type-specific structures.

               rndr_autolink
                       For LOWDOWN_LINK_AUTO, the link address as link and the link type type, which may be  one
                       of  HALINK_EMAIL  for e-mail links and HALINK_NORMAL otherwise.  Any buffer may be empty-
                       sized.
               rndr_blockcode
                       For LOWDOWN_BLOCKCODE, the opaque text of the block and the optional  lang  of  the  code
                       language.
               rndr_blockhtml
                       For LOWDOWN_BLOCKHTML, the opaque HTML text.
               rndr_codespan
                       The opaque text of the contents.
               rndr_definition
                       For  LOWDOWN_DEFINITION,  containing  flags  that may be HLIST_FL_BLOCK if the definition
                       list should be interpreted as containing block nodes.
               rndr_entity
                       For LOWDOWN_ENTITY, the entity text.
               rndr_header
                       For LOWDOWN_HEADER, the level of the header starting at zero (this value is  relative  to
                       the  metadata  base header level, defaulting to one), optional space-separated class list
                       attr_cls, and optional single identifier attr_id.
               rndr_image
                       For LOWDOWN_IMAGE, the image address link, the image title title, dimensions  NxN  (width
                       by  height)  in dims, and alternate text alt.  CSS in-line style for width and height may
                       be given in attr_width and/or attr_height, and a space-separated list of classes  may  be
                       in attr_cls and a single identifier may be in attr_id.
               rndr_link
                       Like rndr_autolink, but without a type and further defining an optional link title title,
                       optional space-separated class list attr_cls, and optional single identifier attr_id.
               rndr_list
                       For LOWDOWN_LIST, consists of a bitfield flags that may be set to HLIST_FL_ORDERED for an
                       ordered  list and HLIST_FL_UNORDERED for an unordered one.  If HLIST_FL_BLOCK is set, the
                       list  should  be  output  as  if  items  were  separate  blocks.   The  start  value  for
                       HLIST_FL_ORDERED  is  the  starting list item position, which is one by default and never
                       zero.  The items is the number of list items.
               rndr_listitem
                       For LOWDOWN_LISTITEM, consists of a bitfield flags that may be  set  to  HLIST_FL_ORDERED
                       for  an  ordered  list,  HLIST_FL_UNORDERED  for  an  unordered  list,  HLIST_FL_DEF  for
                       definition list data, HLIST_FL_CHECKED or  HLIST_FL_UNCHECKED  for  an  unordered  “task”
                       list,  and/or  HLIST_FL_BLOCK  for  list  item  output as if containing block nodes.  The
                       HLIST_FL_BLOCK should not be used: use the parent list (or  definition  list)  flags  for
                       this.   The  num is the index in a HLIST_FL_ORDERED list.  It is monotonically increasing
                       with each item in the list, starting at the start variable given in struct rndr_list.
               rndr_math
                       For LOWDOWN_MATH, the mode of display in blockmode: if 1, in-line math; if 2, multi-line.
                       The opaque equation, which is assumed to be in LaTeX format, is in the opaque text.
               rndr_meta
                       Each LOWDOWN_META key-value pair is represented.  The keys are lower-case without  spaces
                       or   non-ASCII   characters.    If   provided,   enclosed   nodes  may  consist  only  of
                       LOWDOWN_NORMAL_TEXT and LOWDOWN_ENTITY.
               rndr_normal_text
                       The basic text content for LOWDOWN_NORMAL_TEXT.  If flags is set  to  HTEXT_ESCAPED,  the
                       text may be escaped for output, but may not be altered by any smart typography or similar
                       (it should be passed as-is).
               rndr_paragraph
                       For  LOWDOWN_PARAGRAPH,  species  how  many lines the paragraph has in the input file and
                       beoln, set to non-zero if the paragraph ends with an empty line  instead  of  a  breaking
                       block node.
               rndr_raw_html
                       For LOWDOWN_RAW_HTML, the opaque HTML text.
               rndr_table
                       For  LOWDOWN_TABLE_BLOCK, the number of columns in each row or header row.  The number of
                       columns in rndr_table, rndr_table_header, and rndr_table_cell are the same.
               rndr_table_cell
                       For  LOWDOWN_TABLE_CELL,  the  current  col  column   number   out   of   columns.    See
                       rndr_table_header  for  a  description  of  the  bits in flags.  The number of columns in
                       rndr_table, rndr_table_header, and rndr_table_cell are the same.
               rndr_table_header
                       For LOWDOWN_TABLE_HEADER, the number of columns in each row  and  the  per-column  flags,
                       which  may  tested  for  equality  against  HTBL_FL_ALIGN_LEFT,  HTBL_FL_ALIGN_RIGHT,  or
                       HTBL_FL_ALIGN_CENTER after being masked with HTBL_FL_ALIGNMASK; or HTBL_FL_HEADER.  If no
                       alignment is specified after the mask, the default should be left-aligned.  The number of
                       columns in rndr_table, rndr_table_header, and rndr_table_cell are the same.

ABSTRACT SYNTAX TREE

       A parsed document is a tree of struct lowdown_node nodes.  If a node is “block”,  it  may  contain  other
       block  or  inline  nodes.   If  “inline,”  it  may  only contain other inline nodes.  “Special” nodes are
       documented below.  An additional mark of “void” means that the node will never contain children.

             Node                        Scope
             LOWDOWN_BLOCKCODE           block, void
             LOWDOWN_BLOCKHTML           block, void
             LOWDOWN_BLOCKQUOTE          block
             LOWDOWN_CODESPAN            inline, void
             LOWDOWN_DEFINITION          block
             LOWDOWN_DEFINITION_DATA     special
             LOWDOWN_DEFINITION_TITLE    special
             LOWDOWN_DOC_HEADER          special
             LOWDOWN_DOUBLE_EMPHASIS     inline
             LOWDOWN_EMPHASIS            inline
             LOWDOWN_ENTITY              inline, void
             LOWDOWN_FOOTNOTE            block, special
             LOWDOWN_HEADER              block
             LOWDOWN_HRULE               inline, void
             LOWDOWN_IMAGE               inline, void
             LOWDOWN_LINEBREAK           inline, void
             LOWDOWN_LINK                inline
             LOWDOWN_LINK_AUTO           inline, void
             LOWDOWN_LIST                block
             LOWDOWN_LISTITEM            special
             LOWDOWN_MATH_BLOCK          inline, void
             LOWDOWN_META                special
             LOWDOWN_NORMAL_TEXT         inline, void
             LOWDOWN_PARAGRAPH           block
             LOWDOWN_RAW_HTML            inline, void
             LOWDOWN_ROOT                special
             LOWDOWN_STRIKETHROUGH       inline
             LOWDOWN_SUBSCRIPT           inline
             LOWDOWN_SUPERSCRIPT         inline
             LOWDOWN_TABLE_BLOCK         block
             LOWDOWN_TABLE_BODY          special
             LOWDOWN_TABLE_CELL          special
             LOWDOWN_TABLE_HEADER        special
             LOWDOWN_TABLE_ROW           special
             LOWDOWN_TRIPLE_EMPHASIS     inline

       The general structure of the AST is as follows.  Nodes have no order imposed on them unless as noted:

       -   LOWDOWN_ROOT (ordered)
           -   LOWDOWN_DOC_HEADER
               -   LOWDOWN_META
                   -   LOWDOWN_ENTITY
                   -   LOWDOWN_NORMAL_TEXT
           -   (zero or more block nodes)

       Special nodes have specific placement within their parents as follows:

       -   LOWDOWN_DEFINITION (one or more ordered pairs of...)
           -   LOWDOWN_DEFINITION_TITLE
               -   (inline nodes)
           -   LOWDOWN_DEFINITION_DATA
               -   (block nodes)

       -   LOWDOWN_HEADER
           -   (inline nodes)

       -   LOWDOWN_LIST
           -   LOWDOWN_LISTITEM
               -   (inline or block nodes, depending)

       -   LOWDOWN_TABLE_BLOCK (ordered)
           -   LOWDOWN_TABLE_HEADER (zero or more...)
               -   LOWDOWN_TABLE_ROW (one or more...)
                   -   LOWDOWN_TABLE_CELL
                       -   (inline nodes)
           -   LOWDOWN_TABLE_BODY (zero or more...)
               -   LOWDOWN_TABLE_ROW (one or more...)
                   -   LOWDOWN_TABLE_CELL
                       -   (inline nodes)

       Lastly, LOWDOWN_FOOTNOTE may appear anywhere in the document and contains block nodes.

SEE ALSO

       lowdown(1),     lowdown_buf(3),      lowdown_buf_diff(3),      lowdown_diff(3),      lowdown_doc_free(3),
       lowdown_doc_new(3),  lowdown_doc_parse(3), lowdown_file(3), lowdown_file_diff(3), lowdown_gemini_free(3),
       lowdown_gemini_new(3),      lowdown_gemini_rndr(3),      lowdown_html_free(3),       lowdown_html_new(3),
       lowdown_html_rndr(3),       lowdown_latex_free(3),      lowdown_latex_new(3),      lowdown_latex_rndr(3),
       lowdown_metaq_free(3),      lowdown_nroff_free(3),      lowdown_nroff_new(3),      lowdown_nroff_rndr(3),
       lowdown_odt_free(3),  lowdown_odt_new(3), lowdown_odt_rndr(3), lowdown_term_free(3), lowdown_term_new(3),
       lowdown_term_rndr(3), lowdown_tree_rndr(3), lowdown(5)

AUTHORS

       lowdown   was   forked   from   hoedown:   https://github.com/hoedown/hoedown   by   Kristaps   Dzonsons,
       kristaps@bsd.lv.  It has been considerably modified since.

Debian                                             $Mdocdate$                                         LOWDOWN(3)