Provided by: mandoc_1.14.3-3_amd64 bug

NAME

       mandoc - format manual pages

SYNOPSIS


       mandoc [-ac] [-I os=name] [-K encoding] [-mdoc | -man] [-O options] [-T output] [-W level] [file ...]

DESCRIPTION

       The mandoc utility formats UNIX manual pages for display.

       By default, mandoc reads mdoc(7) or man(7) text from stdin and produces -T locale output.

       The options are as follows:

       -a      If  the standard output is a terminal device and -c is not specified, use more(1) to paginate the
               output, just like man(1) would.

       -c      Copy the formatted manual pages to the standard output without using more(1)  to  paginate  them.
               This is the default.  It can be specified to override -a.

       -I os=name
               Override the default operating system name for the mdoc(7) Os and for the man(7) TH macro.

       -K encoding
               Specify  the  input  encoding.   The  supported  encoding arguments are us-ascii, iso-8859-1, and
               utf-8.  If not specified, autodetection uses the first match in the following list:

               1.   If the first three bytes of the input file are the UTF-8 byte order  mark  (BOM,  0xefbbbf),
                    input is interpreted as utf-8.

               2.   If the first or second line of the input file matches the emacs mode line format

                          .\" -*- [...;] coding: encoding; -*-

                    then input is interpreted according to encoding.

               3.   If  the  first  non-ASCII  byte  in  the  file  introduces  a valid UTF-8 sequence, input is
                    interpreted as utf-8.

               4.   Otherwise, input is interpreted as iso-8859-1.
       -mdoc | -man
               With -mdoc, all input files  are  interpreted  as  mdoc(7).   With  -man,  all  input  files  are
               interpreted  as  man(7).  By default, the input language is automatically detected for each file:
               if the the first macro is Dd or Dt, the mdoc(7) parser is used; otherwise, the man(7)  parser  is
               used.  With other arguments, -m is silently ignored.

       -O options
               Comma-separated output options.

       -T output
               Output format.  See Output Formats for available formats.  Defaults to -T locale.

       -W level
               Specify  the  minimum message level to be reported on the standard error output and to affect the
               exit status.  The level  can  be  base,  style,  warning,  error,  or  unsupp.   The  base  level
               automatically  derives  the  operating  system  from  the contents of the Os macro, from the -Ios
               command line option, or from the uname(3) return  value.   The  levels  openbsd  and  netbsd  are
               variants  of base that bypass autodetection and request validation of base system conventions for
               a particular operating system.  The level all is an  alias  for  base.   By  default,  mandoc  is
               silent.  See EXIT STATUS and DIAGNOSTICS for details.

               The  special  option  -W  stop  tells mandoc to exit after parsing a file that causes warnings or
               errors of at least the requested level.  No formatted output will be produced from that file.  If
               both a level and stop are requested, they can be joined with a comma, for example -W error,stop.

       file    Read input from zero or more files.  If unspecified, reads from stdin.   If  multiple  files  are
               specified, mandoc will halt with the first failed parse.

       The  options  -fhklw  are  also  supported  and are documented in man(1).  In -f and -k mode, mandoc also
       supports the options -CMmOSs described in the apropos(1) manual.  The options -fkl are mutually exclusive
       and override each other.

   Output Formats
       The mandoc utility accepts the following -T arguments, which correspond to output modes:

       -T ascii     Produce 7-bit ASCII output.  See ASCII Output.

       -T html      Produce HTML5, CSS1, and MathML output.  See HTML Output.

       -T lint      Parse only: produce no output.  Implies -W all and redirects parser messages, which  usually
                    appear on standard error output, to standard output.

       -T locale    Encode output using the current locale.  This is the default.  See Locale Output.

       -T man       Produce man(7) format output.  See Man Output.

       -T markdown
                    Produce output in markdown format.  See Markdown Output.

       -T pdf       Produce PDF output.  See PDF Output.

       -T ps        Produce PostScript output.  See PostScript Output.

       -T tree      Produce an indented parse tree.  See Syntax tree output.

       -T utf8      Encode output in the UTF-8 multi-byte format.  See UTF-8 Output.

       If multiple input files are specified, these will be processed by the corresponding filter in-order.

   ASCII Output
       Output produced by -T ascii is rendered in standard 7-bit ASCII documented in ascii(7).

       Font  styles  are applied by using back-spaced encoding such that an underlined character ‘c’ is rendered
       as ‘_\[bs]c’, where ‘\[bs]’ is the back-space character number 8.  Emboldened characters are rendered  as
       ‘c\[bs]c’.

       The special characters documented in mandoc_char(7) are rendered best-effort in an ASCII equivalent.

       Output width is limited to 78 visible columns unless literal input lines exceed this limit.

       The following -O arguments are accepted:

       indent=indent
               The  left margin for normal text is set to indent blank characters instead of the default of five
               for mdoc(7) and seven for man(7).  Increasing this is not recommended; it may result in  degraded
               formatting, for example overfull lines or ugly line breaks.

       width=width
               The output width is set to width.

   HTML Output
       Output  produced  by -T html conforms to HTML5 using optional self-closing tags.  Default styles use only
       CSS1.  Equations rendered from eqn(7) blocks use MathML.

       The mandoc.css file documents style-sheet classes available for customising output.  If a style-sheet  is
       not  specified with -O style, -T html defaults to simple output (via an embedded style-sheet) readable in
       any graphical or text-based web browser.

       Special characters are rendered in decimal-encoded UTF-8.

       The following -O arguments are accepted:

       fragment
               Omit the <!DOCTYPE> declaration and the <html>, <head>, and <body> elements  and  only  emit  the
               subtree  below  the  <body>  element.   The  style argument will be ignored.  This is useful when
               embedding manual content within existing documents.

       includes=fmt
               The string fmt, for example, ../src/%I.html, is used  as  a  template  for  linked  header  files
               (usually  via  the  In  macro).   Instances  of ‘%I’ are replaced with the include filename.  The
               default is not to present a hyperlink.

       man=fmt
               The string fmt, for example, ../html%S/%N.%S.html, is used  as  a  template  for  linked  manuals
               (usually  via  the  Xr  macro).  Instances of ‘%N’ and ‘%S’ are replaced with the linked manual's
               name and section, respectively.  If no section is included, section 1 is assumed.  The default is
               not to present a hyperlink.

       style=style.css
               The file style.css is used for an external  style-sheet.   This  must  be  a  valid  absolute  or
               relative URI.

   Locale Output
       Locale-depending output encoding is triggered with -T locale.  This is the default.

       This  option  is  not  available  on all systems: systems without locale support, or those whose internal
       representation is not natively UCS-4, will fall back to -T  ascii.   See  ASCII  Output  for  font  style
       specification and available command-line arguments.

   Man Output
       Translate  input  format  into  man(7)  output format.  This is useful for distributing manual sources to
       legacy systems lacking mdoc(7) formatters.

       If mdoc(7) is passed as input, it is translated into man(7).  If the input format is man(7), the input is
       copied to the output, expanding any roff(7) so requests.  The parser is also run, and as  usual,  the  -W
       level controls which DIAGNOSTICS are displayed before copying the input to the output.

   Markdown Output
       Translate mdoc(7) input to the markdown format conforming to John Gruber's 2004 specification:
             http://daringfireball.net/projects/markdown/syntax.text.
       The output also almost conforms to the CommonMark: http://commonmark.org/ specification.

       The  character  set  used  for  the  markdown  output is ASCII.  Non-ASCII characters are encoded as HTML
       entities.  Since that is not possible in literal font contexts, because these are rendered as code  spans
       and  code  blocks in the markdown output, non-ASCII characters are transliterated to ASCII approximations
       in these contexts.

       Markdown is a very weak markup  language,  so  all  semantic  markup  is  lost,  and  even  part  of  the
       presentational  markup  may  be  lost.   Do  not  use this as an intermediate step in converting to HTML;
       instead, use -T html directly.

       The man(7), tbl(7), and eqn(7) input languages are not supported by -T markdown output mode.

   PDF Output
       PDF-1.1 output may be generated by -T pdf.  See PostScript Output for -O arguments and defaults.

   PostScript Output
       PostScript "Adobe-3.0" Level-2 pages may be generated by -T ps.  Output pages default to letter sized and
       are rendered in the Times font family, 11-point.  Margins are calculated  as  1/9  the  page  length  and
       width.  Line-height is 1.4m.

       Special characters are rendered as in ASCII Output.

       The following -O arguments are accepted:

       paper=name
               The  paper  size  name may be one of a3, a4, a5, legal, or letter.  You may also manually specify
               dimensions as NNxNN, width by height in millimetres.  If an unknown value is encountered,  letter
               is used.

   UTF-8 Output
       Use -T utf8 to force a UTF-8 locale.  See Locale Output for details and options.

   Syntax tree output
       Use  -T  tree to show a human readable representation of the syntax tree.  It is useful for debugging the
       source code of manual pages.  The exact format is subject to change, so don't write parsers for it.

       The first paragraph shows meta data found in the  mdoc(7)  prologue,  on  the  man(7)  TH  line,  or  the
       fallbacks used.

       In  the tree dump, each output line shows one syntax tree node.  Child nodes are indented with respect to
       their parent node.  The columns are:

       1.   For macro nodes, the macro name; for text and tbl(7) nodes, the content.  There is a special  format
            for eqn(7) nodes.
       2.   Node type (text, elem, block, head, body, body-end, tail, tbl, eqn).
       3.   Flags:
            -   An opening parenthesis if the node is an opening delimiter.
            -   An asterisk if the node starts a new input line.
            -   The input line number (starting at one).
            -   A colon.
            -   The input column number (starting at one).
            -   A closing parenthesis if the node is a closing delimiter.
            -   A full stop if the node ends a sentence.
            -   BROKEN if the node is a block broken by another block.
            -   NOSRC if the node is not in the input file, but automatically generated from macros.
            -   NOPRT if the node is not supposed to generate output for any output format.
       The following -O argument is accepted:

       noval   Skip  validation and show the unvalidated syntax tree.  This can help to find out whether a given
               behaviour is caused by the parser or by the validator.  Meta data is not available in this case.

ENVIRONMENT

       MANPAGER  Any non-empty value of the environment variable  MANPAGER  is  used  instead  of  the  standard
                 pagination program, more(1); see man(1) for details.  Only used if -a or -l is specified.

       PAGER     Specifies  the  pagination  program  to use when MANPAGER is not defined.  If neither PAGER nor
                 MANPAGER is defined, more(1) -s is used.  Only used if -a or -l is specified.

EXIT STATUS

       The mandoc utility exits with one of the following values, controlled by  the  message  level  associated
       with the -W option:

       0       No  base  system convention violations, style suggestions, warnings, or errors occurred, or those
               that did were ignored because they were lower than the requested level.
       1       At least one base system convention violation or style suggestion occurred,  but  no  warning  or
               error, and -W base or -W style was specified.
       2       At least one warning occurred, but no error, and -W warning or a lower level was requested.
       3       At  least one parsing error occurred, but no unsupported feature was encountered, and -W error or
               a lower level was requested.
       4       At least one unsupported feature was encountered, and -W unsupp or a lower level was requested.
       5       Invalid command line arguments were specified.  No input files have been read.
       6       An operating system error occurred, for  example  exhaustion  of  memory,  file  descriptors,  or
               process  table  entries.   Such  errors  cause  mandoc to exit at once, possibly in the middle of
               parsing or formatting a file.

       Note that selecting -T lint output mode implies -W all.

EXAMPLES

       To page manuals to the terminal:

             $ mandoc -l mandoc.1 man.1 apropos.1 makewhatis.8

       To produce HTML manuals with mandoc.css as the style-sheet:

             $ mandoc -T html -O style=mandoc.css mdoc.7 > mdoc.7.html

       To check over a large set of manuals:

             $ mandoc -T lint `find /usr/src -name \*\.[1-9]`

       To produce a series of PostScript manuals for A4 paper:

             $ mandoc -T ps -O paper=a4 mdoc.7 man.7 > manuals.ps

       Convert a modern mdoc(7) manual to the older man(7) format, for use on systems lacking an mdoc(7) parser:

             $ mandoc -T man foo.mdoc > foo.man

DIAGNOSTICS

       Messages displayed by mandoc follow this format:

             mandoc: file:line:column: level: message: macro args (os)

       Line and column numbers start at 1.  Both are omitted for messages referring to an input file as a whole.
       Macro names and arguments are omitted where meaningless.  The os operating system  specifier  is  omitted
       for  messages  that  are  relevant  for all operating systems.  Fatal messages about invalid command line
       arguments or operating system errors, for example when memory is exhausted, may also omit  the  file  and
       level fields.

       Message levels have the following meanings:

       unsupp   An  input file uses unsupported low-level roff(7) features.  The output may be incomplete and/or
                misformatted, so using GNU troff instead of mandoc to process the file may be preferable.

       error    Indicates a risk of information loss or severe misformatting, in most cases  caused  by  serious
                syntax errors.

       warning  Indicates  a  risk that the information shown or its formatting may mismatch the author's intent
                in minor ways.  Additionally, syntax errors are classified at least as warnings, even if they do
                not usually cause misformatting.

       style    An input file uses dubious or discouraged style.  This is not a complaint about the syntax,  and
                probably  neither  formatting nor portability are in danger.  While great care is taken to avoid
                false positives on the higher message levels, the style level tries to  reduce  the  probability
                that  issues go unnoticed, so it may occasionally issue bogus suggestions.  Please use your good
                judgement to decide whether any particular style suggestion really justifies  a  change  to  the
                input file.

       base     A  convertion  used  in the base system of a specific operating system is not adhered to.  These
                are not markup mistakes, and neither the quality of formatting nor portability  are  in  danger.
                Messages of the base level are printed with the more intuitive style level tag.

       Messages  of  the  base,  style,  warning,  error,  and  unsupp levels except those about non-existent or
       unreadable input files are hidden unless their level, or a lower level, is requested using a -W option or
       -T lint output mode.

       As indicated below, all base and some style checks are only performed if a specific operating system name
       occurs in the arguments of the -W command line option, of the Os macro, of the -Ios command line  option,
       or, if neither are present, in the return value of the uname(3) function.

   Conventions for base system manuals
       ®.br  (mdoc, NetBSD)  The  Dd macro uses CVS Mdocdate keyword substitution, which is not supported by the
       NetBSD base system.  Consider using the conventional Month dd, yyyy format instead.

       ®.br (mdoc, OpenBSD) The Dd macro does not use  CVS  Mdocdate  keyword  substitution,  but  using  it  is
       conventionally expected in the OpenBSD base system.

       ®.br  (mdoc, OpenBSD, NetBSD)  The third argument of the Dt macro does not match any of the architectures
       this operating system is running on.

       ®.br (mdoc, OpenBSD, NetBSD) The Os macro has an argument.  In the base system, it is conventionally left
       blank.

       ®.br (OpenBSD, NetBSD) The manual page lacks the comment line with the RCS identifier  generated  by  CVS
       OpenBSD or NetBSD keyword substitution as conventionally used in these operating systems.

       ®.br  (mdoc) An Xr macro references a manual page that is not found in the base system.  The path to look
       for base system manuals is configurable at compile time and defaults to /usr/share/man: /usr/X11R6/man.

   Style suggestions
       ®.br (mdoc) The Dd macro uses the legacy man(7) date format yyyy-dd-mm.  Consider using the  conventional
       mdoc(7) date format Month dd, yyyy instead.

       ®.br (mdoc, man) The title is still used as given in the Dt or TH macro.

       ®.br  A  single  manual  page  contains  two  copies of the RCS identifier for the same operating system.
       Consider deleting the later instance and moving the first one up to the top of the page.

       ®.br (mdoc) Fuzzy string matching revealed that the argument of an Sh macro is similar, but not identical
       to a standard section name.

       ®.br (roff) Macro arguments can be enclosed in double quote characters such  that  space  characters  and
       macro names contained in the quoted argument need not be escaped.  The closing quote of the last argument
       of  a  macro can be omitted.  However, omitting it is not recommended because it makes the code harder to
       read.

       ®.br (mdoc) A Bt, Tn, or Ud macro was found.  Simply delete it: it serves no useful purpose.

       ®.br (mdoc) A string was found in plain text or in a Bx macro that could be represented using Ox, Nx, Fx,
       or Dx.

       ®.br (mdoc, NetBSD) The Er items in a Bl list are not in alphabetical order.

       ®.br (mdoc, NetBSD) A Bl list contains two consecutive It entries describing the same Er number.

       ®.br (mdoc) The last argument of an Ex, Fo, Nd, Nm, Os, Sh, Ss, St, or Sx  macro  ends  with  a  trailing
       delimiter.   This  is  usually  bad  style  and often indicates typos.  Most likely, the delimiter can be
       removed.

       ®.br (mdoc) The last argument of a macro that supports trailing delimiter arguments is  longer  than  one
       byte  and  ends  with a trailing delimiter.  Consider inserting a blank such that the delimiter becomes a
       separate argument, thus moving it out of the scope of the macro.

       ®.br (man) A fi request occurs even though the document is still in fill mode, or already  switched  back
       to fill mode.  It has no effect.

       ®.br  (man)  An  nf  request occurs even though the document already switched to no-fill mode and did not
       switch back to fill mode yet.  It has no effect.

       ®.br (mdoc) A word followed by an empty pair of parentheses occurs on a text line.  Consider using an  Fn
       or Xr macro.

       ®.br  (mdoc,  man,  roff) Whitespace at the end of input lines is almost never semantically significant —
       but in the odd case where it  might  be,  it  is  extremely  confusing  when  reviewing  and  maintaining
       documents.

       ®.br  (roff)  Comment  lines  start  with  a  dot, a backslash, and a double-quote character.  The mandoc
       utility treats the line as a comment line even without the backslash, but leaving out the backslash might
       not be portable.

   Warnings related to the document prologue
       ®.br (mdoc) A Dt macro has no arguments, or there is no Dt macro before the first non-prologue macro.

       ®.br (man) There is no TH macro, or it has no arguments.

       ®.br (mdoc, man) A Dt or TH macro lacks the mandatory section argument.

       ®.br (mdoc) The section number in a Dt line is invalid, but still used.

       ®.br (mdoc, man) The document was parsed as mdoc(7) and it has no Dd  macro,  or  the  Dd  macro  has  no
       arguments or only empty arguments; or the document was parsed as man(7) and it has no TH macro, or the TH
       macro has less than three arguments or its third argument is empty.

       ®.br (mdoc, man) The date given in a Dd or TH macro does not follow the conventional format.

       ®.br  (mdoc,  man)  The  date  given  in  a Dd or TH macro is more than a day ahead of the current system
       time(3).

       ®.br (mdoc) The default or current system is not shown in this case.

       ®.br (mdoc) A Dd or Os macro occurs after some non-prologue macro, but still takes effect.

       ®.br (mdoc) The prologue macros are not given in the conventional order Dd, Dt, Os.  All three macros are
       used even when given in another order.

   Warnings regarding document structure
       ®.br (roff) Including files only works when the parser program runs  with  the  correct  current  working
       directory.

       ®.br  (mdoc,  man)  The  document  body  contains  neither  text nor macros.  An empty document is shown,
       consisting only of a header and a footer line.

       ®.br (mdoc, man) Some macros or text precede the first Sh or SH section header.  The offending macros and
       text are parsed and added to the top level of the syntax tree, outside any section block.

       ®.br (mdoc) The argument of the first Sh macro  is  not  ‘NAME’.   This  may  confuse  makewhatis(8)  and
       apropos(1).

       ®.br (mdoc) The NAME section does not contain any Nm child macro before the first Nd macro.

       ®.br (mdoc) The NAME section lacks the mandatory Nd child macro.

       ®.br (mdoc) The NAME section does contain an Nd child macro, but other content follows it.

       ®.br (mdoc) The NAME section contains plain text or macros other than Nm and Nd.

       ®.br (mdoc) The NAME section contains an Nm macro that is neither the first one nor preceded by a comma.

       ®.br  (mdoc)  The  Nd macro lacks the required argument.  The title line of the manual will end after the
       dash.

       ®.br (mdoc) An Nd macro appears outside the NAME section.  The  arguments  are  printed  anyway  and  the
       following text is used for apropos(1), but none of that behaviour is portable.

       ®.br  (mdoc) A standard section occurs after another section it usually precedes.  All section titles are
       used as given, and the order of sections is not changed.

       ®.br (mdoc) The same standard section title occurs more than once.

       ®.br (mdoc) A standard section header occurs in a section of the manual where it normally isn't useful.

       ®.br (mdoc) An Xr macro refers to a name and section matching the section of the present manual page  and
       a name mentioned in an Nm macro in the NAME or SYNOPSIS section, or in an Fn or Fo macro in the SYNOPSIS.
       Consider using Nm or Fn instead of Xr.

       ®.br  (mdoc)  In  the SEE ALSO section, an Xr macro with a lower section number follows one with a higher
       number, or two Xr macros referring to the same section are out of alphabetical order.

       ®.br (mdoc) In the SEE ALSO section, punctuation between two Xr macros differs from a  single  comma,  or
       there is trailing punctuation after the last Xr macro.

       ®.br  (mdoc)  An  AUTHORS sections contains no An macros, or only empty ones.  Probably, there are author
       names lacking markup.

   Warnings related to macros and nesting
       ®.br (mdoc) See the mdoc(7) manual for replacements.

       ®.br (mdoc) The name of a macro that is not callable appears on a macro line.  It  is  printed  verbatim.
       If the intention is to call it, move it to its own input line; otherwise, escape it by prepending ‘\&’.

       ®.br In mdoc(7) documents, this happens
       -   at the beginning and end of sections and subsections
       -   right before non-compact lists and displays
       -   at the end of items in non-column, non-compact lists
       -   and for multiple consecutive paragraph macros.
       In man(7) documents, it happens
       -   for empty P, PP, and LP macros
       -   for IP macros having neither head nor body arguments
       -   for br or sp right after SH or SS

       ®.br  (mdoc)  A list item in a Bl list contains a trailing paragraph macro.  The paragraph macro is moved
       after the end of the list.

       ®.br (mdoc) An input line begins with an Ns macro, or the next argument after an Ns macro is an  isolated
       closing delimiter.  The macro is ignored.

       ®.br (mdoc) If two blocks intersect, one should completely contain the other.  Otherwise, rendered output
       is  likely  to look strange in any output format, and rendering in SGML-based output formats is likely to
       be outright wrong because such languages do not support badly nested blocks at all.  Typical examples  of
       badly  nested  blocks  are  "Ao  Bo  Ac  Bc"  and  "Ao  Bq  Ac".  In these examples, Ac breaks Bo and Bq,
       respectively.

       ®.br (mdoc) A Bd, D1, or Dl display occurs nested inside another Bd display.  This works with mandoc, but
       fails with most other implementations.

       ®.br (mdoc) A Bl list block contains text or macros before the first It macro.   The  offending  children
       are moved before the beginning of the list.

       ®.br Inside a Bl -column list, a Ta macro occurs as the first macro on a line, which is not portable.

       ®.br  (man)  While  parsing  the  next-line  scope  of  the  previous  macro, another macro is found that
       prematurely terminates the previous one.  The previous, interrupted macro is deleted from the parse tree.

   Warnings related to missing arguments
       ®.br (roff, eqn) The macro name is missing  from  a  macro  definition  request,  or  an  eqn(7)  control
       statement or operation keyword lacks its required argument.

       ®.br  (roff)  A conditional request is only useful if any of the following follows it on the same logical
       input line:
       -   The ‘\{’ keyword to open a multi-line scope.
       -   A request or macro or some text, resulting in a single-line scope.
       -   The immediate end of the logical line without any  intervening  whitespace,  resulting  in  next-line
           scope.
       Here, a conditional request is followed by trailing whitespace only, and there is no other content on its
       logical  input line.  Note that it doesn't matter whether the logical input line is split across multiple
       physical input lines using ‘\’ line continuation characters.   This  is  one  of  the  rare  cases  where
       trailing  whitespace  is  syntactically significant.  The conditional request controls a scope containing
       whitespace only, so it is unlikely to have a significant effect, except that it may control  a  following
       el clause.

       ®.br (mdoc) The indicated macro has no arguments and hence no effect.

       ®.br  (mdoc, man) A Bd, Bk, Bl, D1, Dl, MT, RS, or UR block contains nothing in its body and will produce
       no output.

       ®.br (mdoc) The required width is missing after Bd or Bl -offset or -width.

       ®.br (mdoc) The Bd macro is invoked without the required display type.

       ®.br (mdoc) In a Bl macro, at least one other argument precedes the type argument.   The  mandoc  utility
       copes with any argument order, but some other mdoc(7) implementations do not.

       ®.br (mdoc) Every Bl macro having the -tag argument requires -width, too.

       ®.br  (mdoc)  The  Ex  -std  macro  is called without an argument before Nm has first been called with an
       argument.

       ®.br (mdoc) The Fo macro is called without an argument.  No function name is printed.

       ®.br (mdoc) In a Bl -diag, -hang, -inset, -ohang, or -tag list, an It macro lacks the required  argument.
       The item head is left empty.

       ®.br  (mdoc) In a Bl -bullet, -dash, -enum, or -hyphen list, an It block is empty.  An empty list item is
       shown.

       ®.br (mdoc) An It macro in a Bd -column list has no arguments.  While mandoc uses the text or  macros  of
       the following line, if any, for the cell, other formatters may misformat the list.

       ®.br (mdoc) A Bf macro has no argument.  It switches to the default font.

       ®.br (mdoc) The Bf argument is invalid.  The default font is used instead.

       ®.br (mdoc) A Pf macro has no argument, or only one argument and no macro follows on the same input line.
       This defeats its purpose; in particular, spacing is not suppressed before the text or macros following on
       the next input line.

       ®.br  (mdoc)  An  Rs  macro is immediately followed by an Re macro on the next input line.  Such an empty
       block does not produce any output.

       ®.br (mdoc) An Xr macro lacks its second, section number argument.  The first argument, i.e. the name, is
       printed, but without subsequent parentheses.

       ®.br (mdoc) An Ex or Rv macro lacks the required -std argument.  The mandoc  utility  assumes  -std  even
       when it is not specified, but other implementations may not.

       ®.br (man) The OP macro is invoked without any argument.  An empty pair of square brackets is shown.

       ®.br (man) The MT or UR macro is invoked without any argument.  An empty pair of angle brackets is shown.

       ®.br  (eqn)  A  diacritic mark or a binary operator is found, but there is nothing to the left of it.  An
       empty box is inserted.

   Warnings related to bad macro arguments
       ®.br (mdoc) A Bd or Bl macro has more than one -compact, more than one -offset, or more than  one  -width
       argument.  All but the last instances of these arguments are ignored.

       ®.br  (mdoc)  An  An  macro  has  more  than one -split or -nosplit argument.  All but the first of these
       arguments are ignored.

       ®.br (mdoc) A Bd macro has more than one type argument; the first one is used.

       ®.br (mdoc) A Bl macro has more than one type argument; the first one is used.

       ®.br (mdoc) A Bl -column, -diag, -ohang, -inset, or -item list  has  a  -width  argument.   That  has  no
       effect.

       ®.br  In  a  line  of a Bl -column list, the number of tabs or Ta macros is less than the number expected
       from the list header line or exceeds the expected number by more than one.  Missing cells  remain  empty,
       and all cells exceeding the number of columns are joined into one single cell.

       ®.br (mdoc) An At macro has an invalid argument.  It is used verbatim, with "AT&T UNIX " prefixed to it.

       ®.br  (mdoc)  An  argument  of  an  Fa or Fn macro contains a comma; it should probably be split into two
       arguments.

       ®.br (mdoc) The first argument of an Fc or Fn macro contains an opening or  closing  parenthesis;  that's
       probably wrong, parentheses are added automatically.

       ®.br  (mdoc,  not  on OpenBSD)  An Lb macro has an unknown name argument and will be rendered as "library
       name".

       ®.br (mdoc) An Rs block contains plain text or non-% macros.  The bogus content is  left  in  the  syntax
       tree.  Formatting may be poor.

       ®.br  (mdoc)  An Sm macro has an argument other than on or off.  The invalid argument is moved out of the
       macro, which leaves the macro empty, causing it to toggle the spacing mode.

       ®.br (man, tbl) A roff(7) ft request or a tbl(7) f layout modifier has an unknown font argument.

       ®.br (roff) A tr request contains an odd number of characters.  The last character is mapped to the blank
       character.

   Warnings related to plain text
       ®.br (mdoc) The meaning of blank input lines is only well-defined in non-fill mode: In  fill  mode,  line
       breaks  of  text  input lines are not supposed to be significant.  However, for compatibility with groff,
       blank lines in fill mode are replaced with sp requests.

       ®.br (mdoc, man) The meaning of tab characters is only well-defined  in  non-fill  mode:  In  fill  mode,
       whitespace is not supposed to be significant on text input lines.  As an implementation dependent choice,
       tab  characters  on  text  lines  are  passed through to the formatters in any case.  Given that the text
       before the tab character will be filled, it is hard to predict which  tab  stop  position  the  tab  will
       advance to.

       ®.br  (mdoc)  A  new  sentence starts in the middle of a text line.  Start it on a new input line to help
       formatters produce correct spacing.

       ®.br (roff) An escape sequence has an invalid opening argument  delimiter,  lacks  the  closing  argument
       delimiter, or the argument has too few characters.  If the argument is incomplete, \* and \n expand to an
       empty  string,  \B  to the digit ‘0’, and \w to the length of the incomplete argument.  All other invalid
       escape sequences are ignored.

       ®.br (roff) If a string is used without being defined before, its value is implicitly set  to  the  empty
       string.  However, defining strings explicitly before use keeps the code more readable.

   Warnings related to tables
       ®.br (tbl) The first cell in a table layout line is a horizontal span (‘s’).  Data provided for this cell
       is ignored, and nothing is printed in the cell.

       ®.br  (tbl) The first line of a table layout specification requests a vertical span (‘^’).  Data provided
       for this cell is ignored, and nothing is printed in the cell.

       ®.br (tbl) A table layout specification contains more than two consecutive vertical bars.  A  double  bar
       is printed, all additional bars are discarded.

   Errors related to tables
       ®.br  (tbl)  The  table  options line contains a character other than a letter, blank, or comma where the
       beginning of an option name is expected.  The character is ignored.

       ®.br (tbl) The table options line contains a string of letters that does not match any known option name.
       The word is ignored.

       ®.br (tbl) A table option that requires an argument is not followed by an  opening  parenthesis,  or  the
       opening parenthesis is immediately followed by a closing parenthesis.  The option is ignored.

       ®.br  (tbl)  A  table  option argument contains an invalid number of characters.  Both the option and the
       argument are ignored.

       ®.br (tbl) A table layout specification is completely empty, specifying zero lines and zero columns.   As
       a fallback, a single left-justified column is used.

       ®.br  (tbl) A table layout specification contains a character that can neither be interpreted as a layout
       key character nor as a layout modifier, or a modifier precedes the first key.  The invalid  character  is
       discarded.

       ®.br  (tbl)  A  table  layout  specification  contains  an  opening  parenthesis, but no matching closing
       parenthesis.  The rest of the input line, starting from the parenthesis, has no effect.

       ®.br (tbl) A table does not contain any data cells.  It will probably produce no output.

       ®.br (tbl) A table cell is marked as a horizontal span (‘s’) or vertical span (‘^’) in the table  layout,
       but it contains data.  The data is ignored.

       ®.br  (tbl)  A  data  line contains more cells than the corresponding layout line.  The data in the extra
       cells is ignored.

       ®.br (tbl) A data block is opened with T{, but never closed with a matching T}.  The remaining data lines
       of the table are all put into one cell, and any remaining cells stay empty.

   Errors related to roff, mdoc, and man code
       ®.br (mdoc) One of the prologue macros occurs more than once.  The last instance overrides  all  previous
       ones.

       ®.br  (mdoc)  The  Dt  macro  appears  after the first non-prologue macro.  Traditional formatters cannot
       handle this because they write the page header before  parsing  the  document  body.   Even  though  this
       technical  restriction  does  not apply to mandoc, traditional semantics is preserved.  The late macro is
       discarded including its arguments.

       ®.br (roff) Explicit recursion limits are implemented for the following features,  in  order  to  prevent
       infinite loops:
       -   expansion of nested escape sequences including expansion of strings and number registers,
       -   expansion of nested user-defined macros,
       -   and so file inclusion.
       When a limit is hit, the output is incorrect, typically losing some content, but the parser can continue.

       ®.br  (mdoc,  man,  roff) The input file contains a byte that is not a printable ascii(7) character.  The
       message mentions the character number.  The offending byte  is  replaced  with  a  question  mark  (‘?’).
       Consider  editing  the  input  file  to  replace  the  byte with an ASCII transliteration of the intended
       character.

       ®.br (mdoc, man, roff) The first identifier on a request or macro line is neither recognized as a roff(7)
       request, nor as a user-defined macro, nor, respectively, as an  mdoc(7)  or  man(7)  macro.   It  may  be
       mistyped or unsupported.  The request or macro is discarded including its arguments.

       ®.br  (roff)  An  input file attempted to run a shell command or to read or write an external file.  Such
       attempts are denied for security reasons.

       ®.br (mdoc, eqn) An It macro occurs outside any Bl list, or an eqn(7) above delimiter occurs outside  any
       pile.  It is discarded including its arguments.

       ®.br (mdoc) A Ta macro occurs outside any Bl -column block.  It is discarded including its arguments.

       ®.br (mdoc, man, eqn, tbl, roff) Various syntax elements can only be used to explicitly close blocks that
       have  previously  been  opened.   An  mdoc(7) block closing macro, a man(7) ME, RE or UE macro, an eqn(7)
       right delimiter or closing brace, or the end of an equation, table, or  roff(7)  conditional  request  is
       encountered but no matching block is open.  The offending request or macro is discarded.

       ®.br  (man)  The RE macro is invoked with an argument, but less than the specified number of RS blocks is
       open.  The RE macro is discarded.

       ®.br (mdoc, tbl) Various mdoc(7) macros as well as tables require explicit closing by  dedicated  macros.
       A  block  that doesn't support bad nesting ends before all of its children are properly closed.  The open
       child nodes are closed implicitly.

       ®.br (mdoc, man, eqn, tbl, roff) At the end of the document, an explicit mdoc(7) block,  a  man(7)  next-
       line  scope  or  MT,  RS or UR block, an equation, table, or roff(7) conditional or ignore block is still
       open.  The open block is closed implicitly.

       ®.br (roff) Macro, string and register identifiers consist of printable, non-whitespace ASCII characters.
       Escape sequences and characters and strings expressed in terms of them cannot form part of a  name.   The
       first  argument of an am, as, de, ds, nr, or rr request, or any argument of an rm request, or the name of
       a request or user defined macro being called, is terminated by an escape sequence.  In the cases  of  as,
       ds,  and nr, the request has no effect at all.  In the cases of am, de, rr, and rm, what was parsed up to
       this point is used as the arguments to the request, and the rest of the input line is discarded including
       the escape sequence.  When parsing for a request or a user-defined macro name  to  be  called,  only  the
       escape  sequence  is  discarded.   The characters preceding it are used as the request or macro name, the
       characters following it are used as the arguments to the request or macro.

       ®.br (mdoc) For security reasons, the Bd macro does not support the -file argument.   By  requesting  the
       inclusion  of  a  sensitive  file,  a  malicious  document  might  otherwise trick a privileged user into
       inadvertently displaying the file on the screen, revealing the file content to bystanders.  The  argument
       is ignored including the file name following it.

       ®.br  (mdoc) A Bd block macro does not have any arguments.  The block is discarded, and the block content
       is displayed in whatever mode was active before the block.

       ®.br (mdoc) A Bl macro fails to specify the list type.

       ®.br (roff) The argument of a ce request is not a number.

       ®.br (mdoc) The first call to Nm, or any call in the NAME section, lacks the required argument.

       ®.br (mdoc) The Os macro is called without  arguments,  and  the  uname(3)  system  call  failed.   As  a
       workaround, mandoc can be compiled with -DOSNAME="\"string\"".

       ®.br (mdoc) An St macro has an unknown argument and is discarded.

       ®.br  (roff,  eqn)  An  it  request  or  an  eqn(7) size or gsize statement has a non-numeric or negative
       argument or no argument at all.  The invalid request or statement is ignored.

       ®.br (roff) For security reasons, mandoc allows so file inclusion requests only with relative  paths  and
       only  without  ascending  to  any  parent  directory.  By requesting the inclusion of a sensitive file, a
       malicious document might otherwise trick a privileged user into inadvertently displaying the file on  the
       screen, revealing the file content to bystanders.  mandoc only shows the path as it appears behind so.

       ®.br  (roff)  Servicing a so request requires reading an external file, but the file could not be opened.
       mandoc only shows the path as it appears behind so.

       ®.br (mdoc, man, eqn, roff) An mdoc(7) Bt, Ed, Ef, Ek, El, Lp, Pp, Re, Rs, or Ud macro, an It macro in  a
       list  that  don't support item heads, a man(7) LP, P, or PP macro, an eqn(7) EQ or EN macro, or a roff(7)
       br, fi, or nf request or ‘..’  block closing  request  is  invoked  with  at  least  one  argument.   All
       arguments are ignored.

       ®.br (mdoc, man, roff) A macro or request is invoked with too many arguments:
         -   Fo, MT, PD, RS, UR, ft, or sp with more than one argument
         -   An with another argument after -split or -nosplit
         -   RE with more than one argument or with a non-integer argument
         -   OP or a request of the de family with more than two arguments
         -   Dt with more than three arguments
         -   TH with more than five arguments
         -   Bd, Bk, or Bl with invalid arguments
       The excess arguments are ignored.

   Unsupported features
       ®.br (mdoc, man) Currently, mandoc cannot handle input files larger than its arbitrary size limit of 2^31
       bytes  (2 Gigabytes).  Since useful manuals are always small, this is not a problem in practice.  Parsing
       is aborted as soon as the condition is detected.

       ®.br (roff) An ASCII control character supported by other roff(7) implementations but not by  mandoc  was
       found in an input file.  It is replaced by a question mark.

       ®.br  (roff) An input file contains a roff(7) request supported by GNU troff or Heirloom troff but not by
       mandoc, and it is likely that this will cause information loss or considerable misformatting.

       ®.br (eqn, tbl) The options line of a table  defines  equation  delimiters.   Any  equation  source  code
       contained in the table will be printed unformatted.

       ®.br (tbl) A table layout specification contains an ‘m’ modifier.  The modifier is discarded.

       ®.br  (tbl,  mdoc,  man)  A table contains an invocation of an mdoc(7) or man(7) macro or of an undefined
       macro.  The macro is ignored, and its arguments are handled as if they were a text line.

SEE ALSO

       apropos(1), man(1), eqn(7), man(7), mandoc_char(7), mdoc(7), roff(7), tbl(7)

HISTORY

       The mandoc  utility  first  appeared  in  OpenBSD 4.8.   The  option  -I  appeared  in  OpenBSD 5.2,  and
       -aCcfhKklMSsw in OpenBSD 5.7.

AUTHORS

       The  mandoc utility was written by Kristaps Dzonsons <kristaps@bsd.lv> and is maintained by Ingo Schwarze
       <schwarze@openbsd.org>.

Debian                                            July 20, 2017                                        MANDOC(1)