{
    "content": [
        {
            "type": "text",
            "text": "# groff_mdoc (info)\n\n## NAME\n\ngroffmdoc -- reference for groff's mdoc implementation\n\n## SYNOPSIS\n\ngroff -mdoc file ...\n\n## DESCRIPTION\n\nA complete reference for writing UNIX manual pages with the -mdoc macro\npackage; a content-based and domain-based formatting package for GNU\ntroff(1).  Its predecessor, the -man(7) package, addressed page layout\nleaving the manipulation of fonts and other typesetting details to the\nindividual author.  In -mdoc, page layout macros make up the page\nstructure domain which consists of macros for titles, section headers,\ndisplays and lists - essentially items which affect the physical position\nof text on a formatted page.  In addition to the page structure domain,\nthere are two more domains, the manual domain and the general text do-\nmain.  The general text domain is defined as macros which perform tasks\nsuch as quoting or emphasizing pieces of text.  The manual domain is de-\nfined as macros that are a subset of the day to day informal language\nused to describe commands, routines and related UNIX files.  Macros in\nthe manual domain handle command names, command-line arguments and op-\ntions, function names, function parameters, pathnames, variables, cross\nreferences to other manual pages, and so on.  These domain items have\nvalue for both the author and the future user of the manual page.  Hope-\nfully, the consistency gained across the manual set will provide easier\ntranslation to future documentation tools.\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **DESCRIPTION**\n- **GETTING STARTED**\n- **TROFF IDIOSYNCRASIES**\n- **A MANUAL PAGE TEMPLATE**\n- **CONVENTIONS**\n- **TITLE MACROS**\n- **INTRODUCTION OF MANUAL AND GENERAL TEXT DOMAINS**\n- **MANUAL DOMAIN**\n- **GENERAL TEXT DOMAIN**\n- **PAGE STRUCTURE DOMAIN**\n- **MISCELLANEOUS MACROS**\n- **PREDEFINED STRINGS**\n- **DIAGNOSTICS**\n- **FILES**\n- **SEE ALSO**\n- **BUGS**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "groff_mdoc",
        "section": "",
        "mode": "info",
        "summary": "groffmdoc -- reference for groff's mdoc implementation",
        "synopsis": "groff -mdoc file ...",
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [
            {
                "name": "groff",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/groff/1/json"
            },
            {
                "name": "man",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/man/1/json"
            },
            {
                "name": "troff",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/troff/1/json"
            },
            {
                "name": "groffman",
                "section": "7",
                "url": "https://www.chedong.com/phpMan.php/man/groffman/7/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 23,
                "subsections": []
            },
            {
                "name": "GETTING STARTED",
                "lines": 90,
                "subsections": []
            },
            {
                "name": "TROFF IDIOSYNCRASIES",
                "lines": 151,
                "subsections": []
            },
            {
                "name": "A MANUAL PAGE TEMPLATE",
                "lines": 52,
                "subsections": []
            },
            {
                "name": "CONVENTIONS",
                "lines": 25,
                "subsections": []
            },
            {
                "name": "TITLE MACROS",
                "lines": 197,
                "subsections": []
            },
            {
                "name": "INTRODUCTION OF MANUAL AND GENERAL TEXT DOMAINS",
                "lines": 108,
                "subsections": []
            },
            {
                "name": "MANUAL DOMAIN",
                "lines": 557,
                "subsections": []
            },
            {
                "name": "GENERAL TEXT DOMAIN",
                "lines": 336,
                "subsections": []
            },
            {
                "name": "PAGE STRUCTURE DOMAIN",
                "lines": 587,
                "subsections": []
            },
            {
                "name": "MISCELLANEOUS MACROS",
                "lines": 54,
                "subsections": []
            },
            {
                "name": "PREDEFINED STRINGS",
                "lines": 34,
                "subsections": []
            },
            {
                "name": "DIAGNOSTICS",
                "lines": 37,
                "subsections": []
            },
            {
                "name": "FILES",
                "lines": 11,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "BUGS",
                "lines": 12,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "groffmdoc -- reference for groff's mdoc implementation\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "groff -mdoc file ...\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "A complete reference for writing UNIX manual pages with the -mdoc macro\npackage; a content-based and domain-based formatting package for GNU\ntroff(1).  Its predecessor, the -man(7) package, addressed page layout\nleaving the manipulation of fonts and other typesetting details to the\nindividual author.  In -mdoc, page layout macros make up the page\nstructure domain which consists of macros for titles, section headers,\ndisplays and lists - essentially items which affect the physical position\nof text on a formatted page.  In addition to the page structure domain,\nthere are two more domains, the manual domain and the general text do-\nmain.  The general text domain is defined as macros which perform tasks\nsuch as quoting or emphasizing pieces of text.  The manual domain is de-\nfined as macros that are a subset of the day to day informal language\nused to describe commands, routines and related UNIX files.  Macros in\nthe manual domain handle command names, command-line arguments and op-\ntions, function names, function parameters, pathnames, variables, cross\nreferences to other manual pages, and so on.  These domain items have\nvalue for both the author and the future user of the manual page.  Hope-\nfully, the consistency gained across the manual set will provide easier\ntranslation to future documentation tools.\n\nThroughout the UNIX manual pages, a manual entry is simply referred to as\na man page, regardless of actual length and without sexist intention.\n",
                "subsections": []
            },
            "GETTING STARTED": {
                "content": "The material presented in the remainder of this document is outlined as\nfollows:\n\n1.   TROFF IDIOSYNCRASIES\nMacro Usage\nPassing Space Characters in an Argument\nTrailing Blank Space Characters\nEscaping Special Characters\nOther Possible Pitfalls\n\n2.   A MANUAL PAGE TEMPLATE\n\n3.   CONVENTIONS\n\n4.   TITLE MACROS\n\n5.   INTRODUCTION OF MANUAL AND GENERAL TEXT DOMAINS\nWhat's in a Name...\nGeneral Syntax\n\n6.   MANUAL DOMAIN\nAddresses\nAuthor Name\nArguments\nConfiguration Declarations (Section Four Only)\nCommand Modifiers\nDefined Variables\nErrno's\nEnvironment Variables\nFlags\nFunction Declarations\nFunction Types\nFunctions (Library Routines)\nFunction Arguments\nReturn Values\nExit Status\nInteractive Commands\nLibrary Names\nLiterals\nNames\nOptions\nPathnames\nStandards\nVariable Types\nVariables\nManual Page Cross References\n\n7.   GENERAL TEXT DOMAIN\nAT&T Macro\nBSD Macro\nNetBSD Macro\nFreeBSD Macro\nDragonFly Macro\nOpenBSD Macro\nBSD/OS Macro\nUNIX Macro\nEmphasis Macro\nFont Mode\nEnclosure and Quoting Macros\nNo-Op or Normal Text Macro\nNo-Space Macro\nSection Cross References\nSymbolics\nMathematical Symbols\nReferences and Citations\nTrade Names (or Acronyms and Type Names)\nExtended Arguments\n\n8.   PAGE STRUCTURE DOMAIN\nSection Headers\nSubsection Headers\nParagraphs and Line Spacing\nKeeps\nExamples and Displays\nLists and Columns\n\n9.   MISCELLANEOUS MACROS\n\n10.  PREDEFINED STRINGS\n\n11.  DIAGNOSTICS\n\n12.  FORMATTING WITH GROFF, TROFF, AND NROFF\n\n13.  FILES\n\n14.  SEE ALSO\n\n15.  BUGS\n",
                "subsections": []
            },
            "TROFF IDIOSYNCRASIES": {
                "content": "The -mdoc package attempts to simplify the process of writing a man page.\nTheoretically, one should not have to learn the tricky details of GNU\ntroff(1) to use -mdoc; however, there are a few limitations which are un-\navoidable and best gotten out of the way.  And, too, be forewarned, this\npackage is not fast.\n\nMacro Usage\nAs in GNU troff(1), a macro is called by placing a '.' (dot character) at\nthe beginning of a line followed by the two-character (or three-charac-\nter) name for the macro.  There can be space or tab characters between\nthe dot and the macro name.  Arguments may follow the macro separated by\nspaces (but no tabs).  It is the dot character at the beginning of the\nline which causes GNU troff(1) to interpret the next two (or more) char-\nacters as a macro name.  A single starting dot followed by nothing is ig-\nnored.  To place a '.' (dot character) at the beginning of an input line\nin some context other than a macro invocation, precede the '.' (dot) with\nthe '\\&' escape sequence which translates literally to a zero-width\nspace, and is never displayed in the output.\n\nIn general, GNU troff(1) macros accept an unlimited number of arguments\n(contrary to other versions of troff which can't handle more than nine\narguments).  In limited cases, arguments may be continued or extended on\nthe next line (See Extended Arguments below).  Almost all macros handle\nquoted arguments (see Passing Space Characters in an Argument below).\n\nMost of the -mdoc general text domain and manual domain macros are spe-\ncial in that their argument lists are parsed for callable macro names.\nThis means an argument on the argument list which matches a general text\nor manual domain macro name (and which is defined to be callable) will be\nexecuted or called when it is processed.  In this case the argument, al-\nthough the name of a macro, is not preceded by a '.' (dot).  This makes\nit possible to nest macros; for example the option macro, '.Op', may call\nthe flag and argument macros, 'Fl' and 'Ar', to specify an optional flag\nwith an argument:\n\n[-s bytes]  is produced by '.Op Fl s Ar bytes'\n\nTo prevent a string from being interpreted as a macro name, precede the\nstring with the escape sequence '\\&':\n\n[Fl s Ar bytes]  is produced by '.Op \\&Fl s \\&Ar bytes'\n\nHere the strings 'Fl' and 'Ar' are not interpreted as macros.  Macros\nwhose argument lists are parsed for callable arguments are referred to as\nparsed and macros which may be called from an argument list are referred\nto as callable throughout this document.  This is a technical faux pas as\nalmost all of the macros in -mdoc are parsed, but as it was cumbersome to\nconstantly refer to macros as being callable and being able to call other\nmacros, the term parsed has been used.\n\nIn the following, we call an -mdoc macro which starts a line (with a\nleading dot) a command if this distinction is necessary.\n\nPassing Space Characters in an Argument\nSometimes it is desirable to give as an argument a string containing one\nor more blank space characters, say, to specify arguments to commands\nwhich expect particular arrangement of items in the argument list.  Addi-\ntionally, it makes -mdoc working faster.  For example, the function com-\nmand '.Fn' expects the first argument to be the name of a function and\nany remaining arguments to be function parameters.  As ANSI C stipulates\nthe declaration of function parameters in the parenthesized parameter\nlist, each parameter is guaranteed to be at minimum a two word string.\nFor example, int foo.\n\nThere are two possible ways to pass an argument which contains an embed-\nded space.  One way of passing a string containing blank spaces is to use\nthe hard or unpaddable space character '\\ ', that is, a blank space pre-\nceded by the escape character '\\'.  This method may be used with any\nmacro but has the side effect of interfering with the adjustment of text\nover the length of a line.  Troff sees the hard space as if it were any\nother printable character and cannot split the string into blank or new-\nline separated pieces as one would expect.  This method is useful for\nstrings which are not expected to overlap a line boundary.  An alterna-\ntive is to use '\\~', a paddable (i.e. stretchable), unbreakable space\n(this is a GNU troff(1) extension).  The second method is to enclose the\nstring with double quotes.\n\nFor example:\n\nfetch(char *str)  is created by '.Fn fetch char\\ *str'\n\nfetch(char *str)  can also be created by '.Fn fetch \"char *str\"'\n\nIf the '\\' before the space in the first example or double quotes in the\nsecond example were omitted, '.Fn' would see three arguments, and the re-\nsult would be:\n\nfetch(char, *str)\n\nTrailing Blank Space Characters\nTroff can be confused by blank space characters at the end of a line.  It\nis a wise preventive measure to globally remove all blank spaces from\n<blank-space><end-of-line> character sequences.  Should the need arise to\nuse a blank character at the end of a line, it may be forced with an un-\npaddable space and the '\\&' escape character.  For example, 'string\\ \\&'.\n\nEscaping Special Characters\nSpecial characters like the newline character '\\n' are handled by replac-\ning the '\\' with '\\e' (e.g. '\\en') to preserve the backslash.\n\nOther Possible Pitfalls\nA warning is emitted when an empty input line is found outside of dis-\nplays (see below).  Use '.sp' instead.  (Well, it is even better to use\n-mdoc macros to avoid the usage of low-level commands.)\n\nLeading spaces will cause a break and are output directly.  Avoid this\nbehaviour if possible.  Similarly, do not use more than one space charac-\nter between words in an ordinary text line; contrary to other text for-\nmatters, they are not replaced with a single space.\n\nYou can't pass '\"' directly as an argument.  Use '\\*[q]' (or '\\*q') in-\nstead.\n\nBy default, troff(1) inserts two space characters after a punctuation\nmark closing a sentence; characters like ')' or ''' are treated transpar-\nently, not influencing the sentence-ending behaviour.  To change this,\ninsert '\\&' before or after the dot:\n\nThe\n.Ql .\ncharacter.\n.Pp\nThe\n.Ql \\&.\ncharacter.\n.Pp\n.No test .\ntest\n.Pp\n.No test.\ntest\n\ngives\n\nThe ''.  character\n\nThe '.' character.\n\ntest.  test\n\ntest. test\n\nAs can be seen in the first and third line, -mdoc handles punctuation\ncharacters specially in macro arguments.  This will be explained in sec-\ntion General Syntax below.  In the same way, you have to protect trailing\nfull stops of abbreviations with a trailing zero-width space: 'e.g.\\&'.\n\nA comment in the source file of a man page can be either started with\n'.\\\"' on a single line, '\\\"' after some input, or '\\#' anywhere (the lat-\nter is a GNU troff(1) extension); the rest of such a line is ignored.\n",
                "subsections": []
            },
            "A MANUAL PAGE TEMPLATE": {
                "content": "The body of a man page is easily constructed from a basic template:\n\n.\\\" The following commands are required for all man pages.\n.Dd Month day, year\n.Dt DOCUMENTTITLE [section number] [architecture/volume]\n.Os [OPERATINGSYSTEM] [version/release]\n.Sh NAME\n.Nm name\n.Nd one line description of name\n.\\\" This next command is for sections 2 and 3 only.\n.\\\" .Sh LIBRARY\n.Sh SYNOPSIS\n.Sh DESCRIPTION\n.\\\" The following commands should be uncommented and\n.\\\" used where appropriate.\n.\\\" .Sh IMPLEMENTATION NOTES\n.\\\" This next command is for sections 2, 3, and 9 only\n.\\\"     (function return values).\n.\\\" .Sh RETURN VALUES\n.\\\" This next command is for sections 1, 6, 7, and 8 only.\n.\\\" .Sh ENVIRONMENT\n.\\\" .Sh FILES\n.\\\" This next command is for sections 1, 6, and 8 only\n.\\\"     (command return values to the shell).\n.\\\" .Sh EXIT STATUS\n.\\\" .Sh EXAMPLES\n.\\\" This next command is for sections 1, 4, 6, 7, 8, and 9 only\n.\\\"     (fprintf/stderr type diagnostics).\n.\\\" .Sh DIAGNOSTICS\n.\\\" .Sh COMPATIBILITY\n.\\\" This next command is for sections 2, 3, 4, and 9 only\n.\\\"     (settings of the errno variable).\n.\\\" .Sh ERRORS\n.\\\" .Sh SEE ALSO\n.\\\" .Sh STANDARDS\n.\\\" .Sh HISTORY\n.\\\" .Sh AUTHORS\n.\\\" .Sh CAVEATS\n.\\\" .Sh BUGS\n\nThe first items in the template are the commands '.Dd', '.Dt', and '.Os';\nthe document date, the operating system the man page or subject source is\ndeveloped or modified for, and the man page title (in upper case) along\nwith the section of the manual the page belongs in.  These commands iden-\ntify the page and are discussed below in TITLE MACROS.\n\nThe remaining items in the template are section headers (.Sh); of which\nNAME, SYNOPSIS, and DESCRIPTION are mandatory.  The headers are discussed\nin PAGE STRUCTURE DOMAIN, after presentation of MANUAL DOMAIN.  Several\ncontent macros are used to demonstrate page layout macros; reading about\ncontent macros before page layout macros is recommended.\n",
                "subsections": []
            },
            "CONVENTIONS": {
                "content": "In the description of all macros below, optional arguments are put into\nbrackets.  An ellipsis ('...') represents zero or more additional argu-\nments.  Alternative values for a parameter are separated with '|'.  If\nthere are alternative values for a mandatory parameter, braces are used\n(together with '|') to enclose the value set.  Meta-variables are speci-\nfied within angles.\n\nExample:\n\n.Xx <foo> {bar1 | bar2} [-test1 [-test2 | -test3]] ...\n\nExcept stated explicitly, all macros are parsed and callable.\n\nNote that a macro takes effect up to the next nested macro.  For example,\n'.Ic foo Aq bar' doesn't produce 'foo <bar>' but 'foo <bar>'.  Conse-\nquently, a warning message is emitted for most commands if the first ar-\ngument is a macro itself since it cancels the effect of the calling com-\nmand completely.  Another consequence is that quoting macros never insert\nliteral quotes; 'foo <bar>' has been produced by '.Ic \"foo <bar>\"'.\n\nMost macros have a default width value which can be used to specify a la-\nbel width (-width) or offset (-offset) for the '.Bl' and '.Bd' macros.\nIt is recommended not to use this rather obscure feature to avoid depen-\ndencies on local modifications of the -mdoc package.\n",
                "subsections": []
            },
            "TITLE MACROS": {
                "content": "The title macros are part of the page structure domain but are presented\nfirst and separately for someone who wishes to start writing a man page\nyesterday.  Three header macros designate the document title or manual\npage title, the operating system, and the date of authorship.  These\nmacros are called once at the very beginning of the document and are used\nto construct headers and footers only.\n\n.Dt [<document title>] [<section number>] [<volume>]\nThe document title is the subject of the man page and must be in\nCAPITALS due to troff limitations.  If omitted, 'UNTITLED' is\nused.  The section number may be a number in the range 1, ..., 9\nor 'unass', 'draft', or 'paper'.  If it is specified, and no vol-\nume name is given, a default volume name is used.\n\nUnder BSD, the following sections are defined:\n\n1   BSD General Commands Manual\n2   BSD System Calls Manual\n3   BSD Library Functions Manual\n4   BSD Kernel Interfaces Manual\n5   BSD File Formats Manual\n6   BSD Games Manual\n7   BSD Miscellaneous Information Manual\n8   BSD System Manager's Manual\n9   BSD Kernel Developer's Manual\n\nA volume name may be arbitrary or one of the following:\n\nUSD     User's Supplementary Documents\nPS1     Programmer's Supplementary Documents\nAMD     Ancestral Manual Documents\nSMM     System Manager's Manual\nURM     User's Reference Manual\nPRM     Programmer's Manual\nKM      Kernel Manual\nIND     Manual Master Index\nLOCAL   Local Manual\nCON     Contributed Software Manual\n\nFor compatibility, 'MMI' can be used for 'IND', and 'LOC' for\n'LOCAL'.  Values from the previous table will specify a new vol-\nume name.  If the third parameter is a keyword designating a com-\nputer architecture, its value is prepended to the default volume\nname as specified by the second parameter.  By default, the fol-\nlowing architecture keywords are defined:\n\nacorn26, acorn32, algor, alpha, amd64, amiga, amigappc,\narc, arm, arm26, arm32, armish, atari, aviion, beagle,\nbebox, cats, cesfic, cobalt, dreamcast, emips, evbarm,\nevbmips, evbppc, evbsh3, ews4800mips, hp300, hp700, hpcarm,\nhpcmips, hpcsh, hppa, hppa64, i386, ia64, ibmnws, iyonix,\nlandisk, loongson, luna68k, luna88k, m68k, mac68k, macppc,\nmips, mips64, mipsco, mmeye, mvme68k, mvme88k, mvmeppc,\nnetwinder, news68k, newsmips, next68k, ofppc, palm, pc532,\nplaystation2, pmax, pmppc, powerpc, prep, rs6000,\nsandpoint, sbmips, sgi, sgimips, sh3, shark, socppc,\nsolbourne, sparc, sparc64, sun2, sun3, tahoe, vax, x68k,\nx8664, xen, zaurus\n\nIf the section number is neither a numeric expression in the\nrange 1 to 9 nor one of the above described keywords, the third\nparameter is used verbatim as the volume name.\n\nIn the following examples, the left (which is identical to the\nright) and the middle part of the manual page header strings are\nshown.  Note how '\\&' prevents the digit 7 from being a valid nu-\nmeric expression.\n\n.Dt FOO 7       'FOO(7)' 'BSD Miscellaneous Information\nManual'\n.Dt FOO 7 bar   'FOO(7)' 'BSD Miscellaneous Information\nManual'\n.Dt FOO \\&7 bar\n'FOO(7)' 'bar'\n.Dt FOO 2 i386  'FOO(2)' 'BSD/i386 System Calls Manual'\n.Dt FOO \"\" bar  'FOO' 'bar'\n\nLocal, OS-specific additions might be found in the file\nmdoc.local; look for strings named 'volume-ds-XXX' (for the for-\nmer type) and 'volume-as-XXX' (for the latter type); 'XXX' then\ndenotes the keyword to be used with the '.Dt' macro.\n\nThis macro is neither callable nor parsed.\n\n.Os [<operating system>] [<release>]\nIf the first parameter is empty, the default 'BSD' is used.  This\nmay be overridden in the local configuration file, mdoc.local.\nIn general, the name of the operating system should be the common\nacronym, e.g. BSD or ATT.  The release should be the standard re-\nlease nomenclature for the system specified.  In the following\ntable, the possible second arguments for some predefined operat-\ning systems are listed.  Similar to '.Dt', local additions might\nbe defined in mdoc.local; look for strings named\n'operating-system-XXX-YYY', where 'XXX' is the acronym for the\noperating system and 'YYY' the release ID.\n\nATT        7th, 7, III, 3, V, V.2, V.3, V.4\n\nBSD        3, 4, 4.1, 4.2, 4.3, 4.3t, 4.3T, 4.3r, 4.3R, 4.4\n\nNetBSD     0.8, 0.8a, 0.9, 0.9a, 1.0, 1.0a, 1.1, 1.2, 1.2a,\n1.2b, 1.2c, 1.2d, 1.2e, 1.3, 1.3a, 1.4, 1.4.1,\n1.4.2, 1.4.3, 1.5, 1.5.1, 1.5.2, 1.5.3, 1.6,\n1.6.1, 1.6.2, 1.6.3, 2.0, 2.0.1, 2.0.2, 2.0.3,\n2.1, 3.0, 3.0.1, 3.0.2, 3.0.3, 3.1, 3.1.1, 4.0,\n4.0.1, 5.0, 5.0.1, 5.0.2, 5.1, 5.1.2, 5.1.3,\n5.1.4, 5.2, 5.2.1, 5.2.2, 6.0, 6.0.1, 6.0.2,\n6.0.3, 6.0.4, 6.0.5, 6.0.6, 6.1, 6.1.1, 6.1.2,\n6.1.3, 6.1.4, 6.1.5, 7.0, 7.0.1, 7.0.2, 7.1,\n7.1.1, 7.1.2, 7.2, 8.0, 8.1\n\nFreeBSD    1.0, 1.1, 1.1.5, 1.1.5.1, 2.0, 2.0.5, 2.1,\n2.1.5, 2.1.6, 2.1.7, 2.2, 2.2.1, 2.2.2, 2.2.5,\n2.2.6, 2.2.7, 2.2.8, 2.2.9, 3.0, 3.1, 3.2, 3.3,\n3.4, 3.5, 4.0, 4.1, 4.1.1, 4.2, 4.3, 4.4, 4.5,\n4.6, 4.6.2, 4.7, 4.8, 4.9, 4.10, 4.11, 5.0, 5.1,\n5.2, 5.2.1, 5.3, 5.4, 5.5, 6.0, 6.1, 6.2, 6.3,\n6.4, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2,\n8.3, 8.4, 9.0, 9.1, 9.2, 9.3, 10.0, 10.1, 10.2,\n10.3, 10.4, 11.0, 11.1, 11.2, 11.3, 12.0, 12.1\n\nOpenBSD    2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8,\n2.9, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7,\n3.8, 3.9, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6,\n4.7, 4.8, 4.9, 5.0, 5.1, 5.2, 5.3, 5.4, 5.5,\n5.6, 5.7, 5.8, 5.9, 6.0, 6.1, 6.2, 6.3, 6.4,\n6.5, 6.6\n\nDragonFly  1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8,\n1.8.1, 1.9, 1.10, 1.11, 1.12, 1.12.2, 1.13, 2.0,\n2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9,\n2.9.1, 2.10, 2.10.1, 2.11, 2.12, 2.13, 3.0,\n3.0.1, 3.0.2, 3.1, 3.2, 3.2.1, 3.2.2, 3.3, 3.4,\n3.4.1, 3.4.2, 3.4.3, 3.5, 3.6, 3.6.1, 3.6.2,\n3.7, 3.8, 3.8.1, 3.8.2, 4.0, 4.0.1, 4.0.2,\n4.0.3, 4.0.4, 4.0.5, 4.0.6, 4.1, 4.2, 4.2.1,\n4.2.2, 4.2.3, 4.2.4, 4.3, 4.4, 4.4.1, 4.4.2,\n4.4.3, 4.5, 4.6, 4.6.1, 4.6.2, 4.7, 4.8, 4.8.1,\n4.9, 5.0, 5.0.1, 5.0.2, 5.1, 5.2, 5.2.1, 5.2.2,\n5.3, 5.4, 5.4.1, 5.4.2, 5.4.3, 5.5, 5.6, 5.6.1,\n5.6.2\n\nDarwin     8.0.0, 8.1.0, 8.2.0, 8.3.0, 8.4.0, 8.5.0, 8.6.0,\n8.7.0, 8.8.0, 8.9.0, 8.10.0, 8.11.0, 9.0.0,\n9.1.0, 9.2.0, 9.3.0, 9.4.0, 9.5.0, 9.6.0, 9.7.0,\n9.8.0, 10.0.0, 10.1.0, 10.2.0, 10.3.0, 10.4.0,\n10.5.0, 10.6.0, 10.7.0, 10.8.0, 11.0.0, 11.1.0,\n11.2.0, 11.3.0, 11.4.0, 11.5.0, 12.0.0, 12.1.0,\n12.2.0, 13.0.0, 13.1.0, 13.2.0, 13.3.0, 13.4.0,\n14.0.0, 14.1.0, 14.2.0, 14.3.0, 14.4.0, 14.5.0,\n15.0.0, 15.1.0, 15.2.0, 15.3.0, 15.4.0, 15.5.0,\n15.6.0, 16.0.0, 16.1.0, 16.2.0, 16.3.0, 16.4.0,\n16.5.0, 16.6.0, 17.0.0, 17.1.0, 17.2.0, 17.3.0,\n17.4.0, 17.5.0, 17.6.0, 17.7.0, 18.0.0, 18.1.0,\n18.2.0, 18.3.0, 18.4.0, 18.5.0, 18.6.0, 18.7.0,\n19.0.0, 19.1.0, 19.2.0\n\nFor ATT, an unknown second parameter will be replaced with the\nstring UNIX; for the other predefined acronyms it will be ignored\nand a warning message emitted.  Unrecognized arguments are dis-\nplayed as given in the page footer.  For instance, a typical\nfooter might be:\n\n.Os BSD 4.3\n\ngiving '4.3 Berkeley Distribution', or for a locally produced set\n\n.Os CS Department\n\nwhich will produce 'CS Department'.\n\nIf the '.Os' macro is not present, the bottom left corner of the\nmanual page will be ugly.\n\nThis macro is neither callable nor parsed.\n\n.Dd [<month> <day>, <year>]\nIf 'Dd' has no arguments, 'Epoch' is used for the date string.\nIf it has exactly three arguments, they are concatenated, sepa-\nrated with unbreakable space:\n\n.Dd January 25, 2001\n\nThe month's name shall not be abbreviated.\n\nWith any other number of arguments, the current date is used, ig-\nnoring the parameters.\n\nAs a special exception, the format\n\n.Dd $Mdocdate: <month> <day> <year> $\n\nis also recognized.  It is used in OpenBSD manuals to automati-\ncally insert the current date when committing.\n\nThis macro is neither callable nor parsed.\n",
                "subsections": []
            },
            "INTRODUCTION OF MANUAL AND GENERAL TEXT DOMAINS": {
                "content": "What's in a Name...\nThe manual domain macro names are derived from the day to day informal\nlanguage used to describe commands, subroutines and related files.\nSlightly different variations of this language are used to describe the\nthree different aspects of writing a man page.  First, there is the de-\nscription of -mdoc macro command usage.  Second is the description of a\nUNIX command with -mdoc macros, and third, the description of a command\nto a user in the verbal sense; that is, discussion of a command in the\ntext of a man page.\n\nIn the first case, troff(1) macros are themselves a type of command; the\ngeneral syntax for a troff command is:\n\n.Xx argument1 argument2 ...\n\n'.Xx' is a macro command, and anything following it are arguments to be\nprocessed.  In the second case, the description of a UNIX command using\nthe content macros is a bit more involved; a typical SYNOPSIS command\nline might be displayed as:\n\nfilter [-flag] <infile> <outfile>\n\nHere, filter is the command name and the bracketed string -flag is a flag\nargument designated as optional by the option brackets.  In -mdoc terms,\n<infile> and <outfile> are called meta arguments; in this example, the\nuser has to replace the meta expressions given in angle brackets with\nreal file names.  Note that in this document meta arguments are used to\ndescribe -mdoc commands; in most man pages, meta variables are not\nspecifically written with angle brackets.  The macros which formatted the\nabove example:\n\n.Nm filter\n.Op Fl flag\n.Ao Ar infile Ac Ao Ar outfile Ac\n\nIn the third case, discussion of commands and command syntax includes\nboth examples above, but may add more detail.  The arguments <infile> and\n<outfile> from the example above might be referred to as operands or file\narguments.  Some command-line argument lists are quite long:\n\nmake  [-eiknqrstv] [-D variable] [-d flags] [-f makefile] [-I\ndirectory] [-j maxjobs] [variable=value] [target ...]\n\nHere one might talk about the command make and qualify the argument,\nmakefile, as an argument to the flag, -f, or discuss the optional file\noperand target.  In the verbal context, such detail can prevent confu-\nsion, however the -mdoc package does not have a macro for an argument to\na flag.  Instead the 'Ar' argument macro is used for an operand or file\nargument like target as well as an argument to a flag like variable.  The\nmake command line was produced from:\n\n.Nm make\n.Op Fl eiknqrstv\n.Op Fl D Ar variable\n.Op Fl d Ar flags\n.Op Fl f Ar makefile\n.Op Fl I Ar directory\n.Op Fl j Ar maxjobs\n.Op Ar variable Ns = Ns Ar value\n.Bk\n.Op Ar target ...\n.Ek\n\nThe '.Bk' and '.Ek' macros are explained in Keeps.\n\nGeneral Syntax\nThe manual domain and general text domain macros share a similar syntax\nwith a few minor deviations; most notably, '.Ar', '.Fl', '.Nm', and '.Pa'\ndiffer only when called without arguments; and '.Fn' and '.Xr' impose an\norder on their argument lists.  All content macros are capable of recog-\nnizing and properly handling punctuation, provided each punctuation char-\nacter is separated by a leading space.  If a command is given:\n\n.Ar sptr, ptr),\n\nThe result is:\n\nsptr, ptr),\n\nThe punctuation is not recognized and all is output in the font used by\n'.Ar'.  If the punctuation is separated by a leading white space:\n\n.Ar sptr , ptr ) ,\n\nThe result is:\n\nsptr, ptr),\n\nThe punctuation is now recognized and output in the default font distin-\nguishing it from the argument strings.  To remove the special meaning\nfrom a punctuation character escape it with '\\&'.\n\nThe following punctuation characters are recognized by -mdoc:\n\n.         ,         :         ;         (\n)         [         ]         ?         !\n\nTroff is limited as a macro language, and has difficulty when presented\nwith a string containing a member of the mathematical, logical or quota-\ntion set:\n\n{+,-,/,*,%,<,>,<=,>=,=,==,&,`,',\"}\n\nThe problem is that troff may assume it is supposed to actually perform\nthe operation or evaluation suggested by the characters.  To prevent the\naccidental evaluation of these characters, escape them with '\\&'.  Typi-\ncal syntax is shown in the first content macro displayed below, '.Ad'.\n",
                "subsections": []
            },
            "MANUAL DOMAIN": {
                "content": "Addresses\nThe address macro identifies an address construct.\n\nUsage: .Ad <address> ...\n\n.Ad addr1           addr1\n.Ad addr1 .         addr1.\n.Ad addr1 , file2   addr1, file2\n.Ad f1 , f2 , f3 :  f1, f2, f3:\n.Ad addr ) ) ,      addr)),\n\nThe default width is 12n.\n\nAuthor Name\nThe '.An' macro is used to specify the name of the author of the item be-\ning documented, or the name of the author of the actual manual page.\n\nUsage: .An <author name> ...\n\n.An \"Joe Author\"        Joe Author\n\n.An \"Joe Author\" ,      Joe Author,\n\n.An \"Joe Author\" Aq nobody@FreeBSD.org\nJoe Author <nobody@FreeBSD.org>\n\n.An \"Joe Author\" ) ) ,  Joe Author)),\n\nThe default width is 12n.\n\nIn the AUTHORS section, the '.An' command causes a line break allowing\neach new name to appear on its own line.  If this is not desirable,\n\n.An -nosplit\n\ncall will turn this off.  To turn splitting back on, write\n\n.An -split\n\nArguments\nThe .Ar argument macro may be used whenever an argument is referenced.\nIf called without arguments, the 'file ...' string is output.\n\nUsage: .Ar [<argument>] ...\n\n.Ar              file ...\n.Ar file1        file1\n.Ar file1 .      file1.\n.Ar file1 file2  file1 file2\n.Ar f1 f2 f3 :   f1 f2 f3:\n.Ar file ) ) ,   file)),\n\nThe default width is 12n.\n\nConfiguration Declaration (Section Four Only)\nThe '.Cd' macro is used to demonstrate a config(8) declaration for a de-\nvice interface in a section four manual.\n\nUsage: .Cd <argument> ...\n\n.Cd \"device le0 at scode?\"  device le0 at scode?\n\nIn the SYNOPSIS section a '.Cd' command causes a line break before and\nafter its arguments are printed.\n\nThe default width is 12n.\n\nCommand Modifiers\nThe command modifier is identical to the '.Fl' (flag) command with the\nexception that the '.Cm' macro does not assert a dash in front of every\nargument.  Traditionally flags are marked by the preceding dash, however,\nsome commands or subsets of commands do not use them.  Command modifiers\nmay also be specified in conjunction with interactive commands such as\neditor commands.  See Flags.\n\nThe default width is 10n.\n\nDefined Variables\nA variable (or constant) which is defined in an include file is specified\nby the macro '.Dv'.\n\nUsage: .Dv <defined variable> ...\n\n.Dv MAXHOSTNAMELEN  MAXHOSTNAMELEN\n.Dv TIOCGPGRP )     TIOCGPGRP)\n\nThe default width is 12n.\n\nErrno's\nThe '.Er' errno macro specifies the error return value for section 2, 3,\nand 9 library routines.  The second example below shows '.Er' used with\nthe '.Bq' general text domain macro, as it would be used in a section two\nmanual page.\n\nUsage: .Er <errno type> ...\n\n.Er ENOENT      ENOENT\n.Er ENOENT ) ;  ENOENT);\n.Bq Er ENOTDIR  [ENOTDIR]\n\nThe default width is 17n.\n\nEnvironment Variables\nThe '.Ev' macro specifies an environment variable.\n\nUsage: .Ev <argument> ...\n\n.Ev DISPLAY        DISPLAY\n.Ev PATH .         PATH.\n.Ev PRINTER ) ) ,  PRINTER)),\n\nThe default width is 15n.\n\nFlags\nThe '.Fl' macro handles command-line flags.  It prepends a dash, '-', to\nthe flag.  For interactive command flags, which are not prepended with a\ndash, the '.Cm' (command modifier) macro is identical, but without the\ndash.\n\nUsage: .Fl <argument> ...\n\n.Fl          -\n.Fl cfv      -cfv\n.Fl cfv .    -cfv.\n.Cm cfv .    cfv.\n.Fl s v t    -s -v -t\n.Fl - ,      --,\n.Fl xyz ) ,  -xyz),\n.Fl |        - |\n\nThe '.Fl' macro without any arguments results in a dash representing\nstdin/stdout.  Note that giving '.Fl' a single dash will result in two\ndashes.\n\nThe default width is 12n.\n\nFunction Declarations\nThe '.Fd' macro is used in the SYNOPSIS section with section two or three\nfunctions.  It is neither callable nor parsed.\n\nUsage: .Fd <argument> ...\n\n.Fd \"#include <sys/types.h>\"  #include <sys/types.h>\n\nIn the SYNOPSIS section a '.Fd' command causes a line break if a function\nhas already been presented and a break has not occurred.  This leaves a\nnice vertical space in between the previous function call and the decla-\nration for the next function.\n\nThe '.In' macro, while in the SYNOPSIS section, represents the #include\nstatement, and is the short form of the above example.  It specifies the\nC header file as being included in a C program.  It also causes a line\nbreak.\n\nWhile not in the SYNOPSIS section, it represents the header file enclosed\nin angle brackets.\n\nUsage: .In <header file>\n\n.In stdio.h  <stdio.h>\n.In stdio.h  <stdio.h>\n\nFunction Types\nThis macro is intended for the SYNOPSIS section.  It may be used anywhere\nelse in the man page without problems, but its main purpose is to present\nthe function type in kernel normal form for the SYNOPSIS of sections two\nand three (it causes a line break, allowing the function name to appear\non the next line).\n\nUsage: .Ft <type> ...\n\n.Ft struct stat  struct stat\n\nFunctions (Library Routines)\nThe '.Fn' macro is modeled on ANSI C conventions.\n\nUsage: .Fn <function> [<parameter>] ...\n\n.Fn getchar              getchar()\n.Fn strlen ) ,           strlen()),\n.Fn align \"char *ptr\" ,  align(char *ptr),\n\nNote that any call to another macro signals the end of the '.Fn' call (it\nwill insert a closing parenthesis at that point).\n\nFor functions with many parameters (which is rare), the macros '.Fo'\n(function open) and '.Fc' (function close) may be used with '.Fa' (func-\ntion argument).\n\nExample:\n\n.Ft int\n.Fo resmkquery\n.Fa \"int op\"\n.Fa \"char *dname\"\n.Fa \"int class\"\n.Fa \"int type\"\n.Fa \"char *data\"\n.Fa \"int datalen\"\n.Fa \"struct rrec *newrr\"\n.Fa \"char *buf\"\n.Fa \"int buflen\"\n.Fc\n\nProduces:\n\nint resmkquery(int op, char *dname, int class, int type,\nchar *data, int datalen, struct rrec *newrr, char *buf, int buflen)\n\nIn the SYNOPSIS section, the function will always begin at the beginning\nof line.  If there is more than one function presented in the SYNOPSIS\nsection and a function type has not been given, a line break will occur,\nleaving a nice vertical space between the current function name and the\none prior.\n\nThe default width values of '.Fn' and '.Fo' are 12n and 16n, respec-\ntively.\n\nFunction Arguments\nThe '.Fa' macro is used to refer to function arguments (parameters) out-\nside of the SYNOPSIS section of the manual or inside the SYNOPSIS section\nif the enclosure macros '.Fo' and '.Fc' instead of '.Fn' are used.  '.Fa'\nmay also be used to refer to structure members.\n\nUsage: .Fa <function argument> ...\n\n.Fa dnamlen ) ) ,  dnamlen)),\n.Fa iovlen         iovlen\n\nThe default width is 12n.\n\nReturn Values\nThe '.Rv' macro generates text for use in the RETURN VALUES section.\n\nUsage: .Rv [-std] [<function> ...]\n\nFor example, '.Rv -std atexit' produces:\n\nThe atexit() function returns the value 0 if successful; otherwise\nthe value -1 is returned and the global variable errno is set to\nindicate the error.\n\nThe -std option is valid only for manual page sections 2 and 3.  Cur-\nrently, this macro does nothing if used without the -std flag.\n\nExit Status\nThe '.Ex' macro generates text for use in the DIAGNOSTICS section.\n\nUsage: .Ex [-std] [<utility> ...]\n\nFor example, '.Ex -std cat' produces:\n\nThe cat utility exits 0 on success, and >0 if an error occurs.\n\nThe -std option is valid only for manual page sections 1, 6 and 8.  Cur-\nrently, this macro does nothing if used without the -std flag.\n\nInteractive Commands\nThe '.Ic' macro designates an interactive or internal command.\n\nUsage: .Ic <argument> ...\n\n.Ic :wq                :wq\n.Ic \"do while {...}\"   do while {...}\n.Ic setenv , unsetenv  setenv, unsetenv\n\nThe default width is 12n.\n\nLibrary Names\nThe '.Lb' macro is used to specify the library where a particular func-\ntion is compiled in.\n\nUsage: .Lb <argument> ...\n\nAvailable arguments to '.Lb' and their results are:\n\nlibarchive     Reading and Writing Streaming Archives Library\n(libarchive, -larchive)\nlibarm         ARM Architecture Library (libarm, -larm)\nlibarm32       ARM32 Architecture Library (libarm32, -larm32)\nlibbluetooth   Bluetooth Library (libbluetooth, -lbluetooth)\nlibbsm         Basic Security Module Library (libbsm, -lbsm)\nlibc           Standard C Library (libc, -lc)\nlibcr         Reentrant C Library (libcr, -lcr)\nlibcalendar    Calendar Arithmetic Library (libcalendar,\n-lcalendar)\nlibcam         Common Access Method User Library (libcam, -lcam)\nlibcdk         Curses Development Kit Library (libcdk, -lcdk)\nlibcipher      FreeSec Crypt Library (libcipher, -lcipher)\nlibcompat      Compatibility Library (libcompat, -lcompat)\nlibcrypt       Crypt Library (libcrypt, -lcrypt)\nlibcurses      Curses Library (libcurses, -lcurses)\nlibdevinfo     Device and Resource Information Utility Library\n(libdevinfo, -ldevinfo)\nlibdevstat     Device Statistics Library (libdevstat, -ldevstat)\nlibdisk        Interface to Slice and Partition Labels Library\n(libdisk, -ldisk)\nlibdwarf       DWARF Access Library (libdwarf, -ldwarf)\nlibedit        Command Line Editor Library (libedit, -ledit)\nlibelf         ELF Access Library (libelf, -lelf)\nlibevent       Event Notification Library (libevent, -levent)\nlibfetch       File Transfer Library for URLs (libfetch, -lfetch)\nlibform        Curses Form Library (libform, -lform)\nlibgeom        Userland API Library for kernel GEOM subsystem\n(libgeom, -lgeom)\nlibgpib        General-Purpose Instrument Bus (GPIB) library\n(libgpib, -lgpib)\nlibi386        i386 Architecture Library (libi386, -li386)\nlibintl        Internationalized Message Handling Library (libintl,\n-lintl)\nlibipsec       IPsec Policy Control Library (libipsec, -lipsec)\nlibipx         IPX Address Conversion Support Library (libipx,\n-lipx)\nlibiscsi       iSCSI protocol library (libiscsi, -liscsi)\nlibjail        Jail Library (libjail, -ljail)\nlibkiconv      Kernel side iconv library (libkiconv, -lkiconv)\nlibkse         N:M Threading Library (libkse, -lkse)\nlibkvm         Kernel Data Access Library (libkvm, -lkvm)\nlibm           Math Library (libm, -lm)\nlibm68k        m68k Architecture Library (libm68k, -lm68k)\nlibmagic       Magic Number Recognition Library (libmagic, -lmagic)\nlibmd          Message Digest (MD4, MD5, etc.) Support Library\n(libmd, -lmd)\nlibmemstat     Kernel Memory Allocator Statistics Library\n(libmemstat, -lmemstat)\nlibmenu        Curses Menu Library (libmenu, -lmenu)\nlibnetgraph    Netgraph User Library (libnetgraph, -lnetgraph)\nlibnetpgp      Netpgp signing, verification, encryption and\ndecryption (libnetpgp, -lnetpgp)\nlibossaudio    OSS Audio Emulation Library (libossaudio,\n-lossaudio)\nlibpam         Pluggable Authentication Module Library (libpam,\n-lpam)\nlibpcap        Packet Capture Library (libpcap, -lpcap)\nlibpci         PCI Bus Access Library (libpci, -lpci)\nlibpmc         Performance Counters Library (libpmc, -lpmc)\nlibposix       POSIX Compatibility Library (libposix, -lposix)\nlibprop        Property Container Object Library (libprop, -lprop)\nlibpthread     POSIX Threads Library (libpthread, -lpthread)\nlibpuffs       puffs Convenience Library (libpuffs, -lpuffs)\nlibrefuse      File System in Userspace Convenience Library\n(librefuse, -lrefuse)\nlibresolv      DNS Resolver Library (libresolv, -lresolv)\nlibrpcsecgss  RPC GSS-API Authentication Library (librpcsecgss,\n-lrpcsecgss)\nlibrpcsvc      RPC Service Library (librpcsvc, -lrpcsvc)\nlibrt          POSIX Real-time Library (librt, -lrt)\nlibsdp         Bluetooth Service Discovery Protocol User Library\n(libsdp, -lsdp)\nlibssp         Buffer Overflow Protection Library (libssp, -lssp)\nlibSystem      System Library (libSystem, -lSystem)\nlibtermcap     Termcap Access Library (libtermcap, -ltermcap)\nlibterminfo    Terminal Information Library (libterminfo,\n-lterminfo)\nlibthr         1:1 Threading Library (libthr, -lthr)\nlibufs         UFS File System Access Library (libufs, -lufs)\nlibugidfw      File System Firewall Interface Library (libugidfw,\n-lugidfw)\nlibulog        User Login Record Library (libulog, -lulog)\nlibusbhid      USB Human Interface Devices Library (libusbhid,\n-lusbhid)\nlibutil        System Utilities Library (libutil, -lutil)\nlibvgl         Video Graphics Library (libvgl, -lvgl)\nlibx8664      x8664 Architecture Library (libx8664, -lx8664)\nlibz           Compression Library (libz, -lz)\n\nLocal, OS-specific additions might be found in the file mdoc.local; look\nfor strings named 'str-Lb-XXX'.  'XXX' then denotes the keyword to be\nused with the '.Lb' macro.\n\nIn the LIBRARY section an '.Lb' command causes a line break before and\nafter its arguments are printed.\n\nLiterals\nThe '.Li' literal macro may be used for special characters, variable con-\nstants, etc. - anything which should be displayed as it would be typed.\n\nUsage: .Li <argument> ...\n\n.Li \\en          \\n\n.Li M1 M2 M3 ;   M1 M2 M3;\n.Li cntrl-D ) ,  cntrl-D),\n.Li 1024 ...     1024 ...\n\nThe default width is 16n.\n\nNames\nThe '.Nm' macro is used for the document title or subject name.  It has\nthe peculiarity of remembering the first argument it was called with,\nwhich should always be the subject name of the page.  When called without\narguments, '.Nm' regurgitates this initial name for the sole purpose of\nmaking less work for the author.  '.Nm' causes a line break within the\nSYNOPSIS section.\n\nNote: A section two or three document function name is addressed with the\n'.Nm' in the NAME section, and with '.Fn' in the SYNOPSIS and remaining\nsections.  For interactive commands, such as the 'while' command keyword\nin csh(1), the '.Ic' macro should be used.  While '.Ic' is nearly identi-\ncal to '.Nm', it can not recall the first argument it was invoked with.\n\nUsage: .Nm [<argument>] ...\n\n.Nm groffmdoc  groffmdoc\n.Nm \\-mdoc      -mdoc\n.Nm foo ) ) ,   foo)),\n.Nm :           groffmdoc:\n\nThe default width is 10n.\n\nOptions\nThe '.Op' macro places option brackets around any remaining arguments on\nthe command line, and places any trailing punctuation outside the brack-\nets.  The macros '.Oo' and '.Oc' (which produce an opening and a closing\noption bracket respectively) may be used across one or more lines or to\nspecify the exact position of the closing parenthesis.\n\nUsage: .Op [<option>] ...\n\n.Op                                []\n.Op Fl k                           [-k]\n.Op Fl k ) .                       [-k]).\n.Op Fl k Ar kookfile               [-k kookfile]\n.Op Fl k Ar kookfile ,             [-k kookfile],\n.Op Ar objfil Op Ar corfil         [objfil [corfil]]\n.Op Fl c Ar objfil Op Ar corfil ,  [-c objfil [corfil]],\n.Op word1 word2                    [word1 word2]\n.Li .Op Oo Ao option Ac Oc ...     .Op [<option>] ...\n\nHere a typical example of the '.Oo' and '.Oc' macros:\n\n.Oo\n.Op Fl k Ar kilobytes\n.Op Fl i Ar interval\n.Op Fl c Ar count\n.Oc\n\nProduces:\n\n[[-k kilobytes] [-i interval] [-c count]]\n\nThe default width values of '.Op' and '.Oo' are 14n and 10n, respec-\ntively.\n\nPathnames\nThe '.Pa' macro formats path or file names.  If called without arguments,\nthe '~' string is output, which represents the current user's home direc-\ntory.\n\nUsage: .Pa [<pathname>] ...\n\n.Pa                    ~\n.Pa /usr/share         /usr/share\n.Pa /tmp/fooXXXXX ) .  /tmp/fooXXXXX).\n\nThe default width is 32n.\n\nStandards\nThe '.St' macro replaces standard abbreviations with their formal names.\n\nUsage: .St <abbreviation> ...\n\nAvailable pairs for \"Abbreviation/Formal Name\" are:\n\nANSI/ISO C\n\n-ansiC          ANSI X3.159-1989 (\"ANSI C89\")\n-ansiC-89       ANSI X3.159-1989 (\"ANSI C89\")\n-isoC           ISO/IEC 9899:1990 (\"ISO C90\")\n-isoC-90        ISO/IEC 9899:1990 (\"ISO C90\")\n-isoC-99        ISO/IEC 9899:1999 (\"ISO C99\")\n-isoC-2011      ISO/IEC 9899:2011 (\"ISO C11\")\n\nPOSIX Part 1: System API\n\n-iso9945-1-90   ISO/IEC 9945-1:1990 (\"POSIX.1\")\n-iso9945-1-96   ISO/IEC 9945-1:1996 (\"POSIX.1\")\n-p1003.1        IEEE Std 1003.1 (\"POSIX.1\")\n-p1003.1-88     IEEE Std 1003.1-1988 (\"POSIX.1\")\n-p1003.1-90     ISO/IEC 9945-1:1990 (\"POSIX.1\")\n-p1003.1-96     ISO/IEC 9945-1:1996 (\"POSIX.1\")\n-p1003.1b-93    IEEE Std 1003.1b-1993 (\"POSIX.1\")\n-p1003.1c-95    IEEE Std 1003.1c-1995 (\"POSIX.1\")\n-p1003.1g-2000  IEEE Std 1003.1g-2000 (\"POSIX.1\")\n-p1003.1i-95    IEEE Std 1003.1i-1995 (\"POSIX.1\")\n-p1003.1-2001   IEEE Std 1003.1-2001 (\"POSIX.1\")\n-p1003.1-2004   IEEE Std 1003.1-2004 (\"POSIX.1\")\n-p1003.1-2008   IEEE Std 1003.1-2008 (\"POSIX.1\")\n\nPOSIX Part 2: Shell and Utilities\n\n-iso9945-2-93   ISO/IEC 9945-2:1993 (\"POSIX.2\")\n-p1003.2        IEEE Std 1003.2 (\"POSIX.2\")\n-p1003.2-92     IEEE Std 1003.2-1992 (\"POSIX.2\")\n-p1003.2a-92    IEEE Std 1003.2a-1992 (\"POSIX.2\")\n\nX/Open\n\n-susv2          Version 2 of the Single UNIX Specification\n(\"SUSv2\")\n-susv3          Version 3 of the Single UNIX Specification\n(\"SUSv3\")\n-svid4          System V Interface Definition, Fourth Edition\n(\"SVID4\")\n-xbd5           X/Open Base Definitions Issue 5 (\"XBD5\")\n-xcu5           X/Open Commands and Utilities Issue 5 (\"XCU5\")\n-xcurses4.2     X/Open Curses Issue 4, Version 2 (\"XCURSES4.2\")\n-xns5           X/Open Networking Services Issue 5 (\"XNS5\")\n-xns5.2         X/Open Networking Services Issue 5.2 (\"XNS5.2\")\n-xpg3           X/Open Portability Guide Issue 3 (\"XPG3\")\n-xpg4           X/Open Portability Guide Issue 4 (\"XPG4\")\n-xpg4.2         X/Open Portability Guide Issue 4, Version 2\n(\"XPG4.2\")\n-xsh5           X/Open System Interfaces and Headers Issue 5\n(\"XSH5\")\n\nMiscellaneous\n\n-ieee754        IEEE Std 754-1985\n-iso8601        ISO 8601\n-iso8802-3      ISO/IEC 8802-3:1989\n\nVariable Types\nThe '.Vt' macro may be used whenever a type is referenced.  In the\nSYNOPSIS section, it causes a line break (useful for old style variable\ndeclarations).\n\nUsage: .Vt <type> ...\n\n.Vt extern char *optarg ;  extern char *optarg;\n.Vt FILE *                 FILE *\n\nVariables\nGeneric variable reference.\n\nUsage: .Va <variable> ...\n\n.Va count             count\n.Va settimer ,        settimer,\n.Va \"int *prt\" ) :    int *prt):\n.Va \"char s\" ] ) ) ,  char s])),\n\nThe default width is 12n.\n\nManual Page Cross References\nThe '.Xr' macro expects the first argument to be a manual page name.  The\noptional second argument, if a string (defining the manual section), is\nput into parentheses.\n\nUsage: .Xr <man page name> [<section>] ...\n\n.Xr mdoc        mdoc\n.Xr mdoc ,      mdoc,\n.Xr mdoc 7      mdoc(7)\n.Xr xinit 1x ;  xinit(1x);\n\nThe default width is 10n.\n",
                "subsections": []
            },
            "GENERAL TEXT DOMAIN": {
                "content": "AT&T Macro\nUsage: .At [<version>] ...\n\n.At       AT&T UNIX\n.At v6 .  Version 6 AT&T UNIX.\n\nThe following values for <version> are possible:\n\n32v, v1, v2, v3, v4, v5, v6, v7, III, V, V.1, V.2, V.3, V.4\n\nBSD Macro\nUsage: .Bx {-alpha | -beta | -devel} ...\n.Bx [<version> [<release>]] ...\n\n.Bx         BSD\n.Bx 4.3 .   4.3BSD.\n.Bx -devel  BSD (currently under development)\n\n<version> will be prepended to the string 'BSD'.  The following values\nfor <release> are possible:\n\nReno, reno, Tahoe, tahoe, Lite, lite, Lite2, lite2\n\nNetBSD Macro\nUsage: .Nx [<version>] ...\n\n.Nx        NetBSD\n.Nx 1.4 .  NetBSD 1.4.\n\nFor possible values of <version> see the description of the '.Os' command\nabove in section TITLE MACROS.\n\nFreeBSD Macro\nUsage: .Fx [<version>] ...\n\n.Fx        FreeBSD\n.Fx 2.2 .  FreeBSD 2.2.\n\nFor possible values of <version> see the description of the '.Os' command\nabove in section TITLE MACROS.\n\nDragonFly Macro\nUsage: .Dx [<version>] ...\n\n.Dx        DragonFly\n.Dx 1.4 .  DragonFly 1.4.\n\nFor possible values of <version> see the description of the '.Os' command\nabove in section TITLE MACROS.\n\nOpenBSD Macro\nUsage: .Ox [<version>] ...\n\n.Ox 1.0  OpenBSD 1.0\n\nBSD/OS Macro\nUsage: .Bsx [<version>] ...\n\n.Bsx 1.0  BSD/OS 1.0\n\nUNIX Macro\nUsage: .Ux ...\n\n.Ux  UNIX\n\nEmphasis Macro\nText may be stressed or emphasized with the '.Em' macro.  The usual font\nfor emphasis is italic.\n\nUsage: .Em <argument> ...\n\n.Em does not          does not\n.Em exceed 1024 .     exceed 1024.\n.Em vide infra ) ) ,  vide infra)),\n\nThe default width is 10n.\n\nFont Mode\nThe '.Bf' font mode must be ended with the '.Ef' macro (the latter takes\nno arguments).  Font modes may be nested within other font modes.\n\n'.Bf' has the following syntax:\n\n.Bf <font mode>\n\n<font mode> must be one of the following three types:\n\nEm | -emphasis  Same as if the '.Em' macro was used for the entire\nblock of text.\nLi | -literal   Same as if the '.Li' macro was used for the entire\nblock of text.\nSy | -symbolic  Same as if the '.Sy' macro was used for the entire\nblock of text.\n\nBoth macros are neither callable nor parsed.\n\nEnclosure and Quoting Macros\nThe concept of enclosure is similar to quoting.  The object being to en-\nclose one or more strings between a pair of characters like quotes or\nparentheses.  The terms quoting and enclosure are used interchangeably\nthroughout this document.  Most of the one-line enclosure macros end in\nsmall letter 'q' to give a hint of quoting, but there are a few irregu-\nlarities.  For each enclosure macro there is also a pair of open and\nclose macros which end in small letters 'o' and 'c' respectively.\n\nQuote   Open   Close   Function                  Result\n.Aq     .Ao    .Ac     Angle Bracket Enclosure   <string>\n.Bq     .Bo    .Bc     Bracket Enclosure         [string]\n.Brq    .Bro   .Brc    Brace Enclosure           {string}\n.Dq     .Do    .Dc     Double Quote              \"string\"\n.Eq     .Eo    .Ec     Enclose String (in XX)    XXstring\n.Pq     .Po    .Pc     Parenthesis Enclosure     (string)\n.Ql                    Quoted Literal            \"string\" or string\n.Qq     .Qo    .Qc     Straight Double Quote     \"string\"\n.Sq     .So    .Sc     Single Quote              'string'\n\nAll macros ending with 'q' and 'o' have a default width value of 12n.\n\n.Eo, .Ec  These macros expect the first argument to be the opening and\nclosing strings respectively.\n\n.Es, .En  Due to the nine-argument limit in the original troff program\ntwo other macros have been implemented which are now rather ob-\nsolete: '.Es' takes the first and second parameter as the left\nand right enclosure string, which are then used to enclose the\narguments of '.En'.  The default width value is 12n for both\nmacros.\n\n.Eq       The first and second arguments of this macro are the opening\nand closing strings respectively, followed by the arguments to\nbe enclosed.\n\n.Ql       The quoted literal macro behaves differently in troff and nroff\nmode.  If formatted with nroff, a quoted literal is always\nquoted.  If formatted with troff, an item is only quoted if the\nwidth of the item is less than three constant width characters.\nThis is to make short strings more visible where the font\nchange to literal (constant width) is less noticeable.\n\nThe default width is 16n.\n\n.Pf       The prefix macro suppresses the whitespace between its first\nand second argument:\n\n.Pf ( Fa name2  (name2\n\nThe default width is 12n.\n\nThe '.Ns' macro (see below) performs the analogous suffix func-\ntion.\n\n.Ap       The '.Ap' macro inserts an apostrophe and exits any special\ntext modes, continuing in '.No' mode.\n\nExamples of quoting:\n\n.Aq                      <>\n.Aq Pa ctype.h ) ,       <ctype.h>),\n.Bq                      []\n.Bq Em Greek , French .  [Greek, French].\n.Dq                      \"\"\n.Dq string abc .         \"string abc\".\n.Dq '^[A-Z]'             \"'^[A-Z]'\"\n.Ql man mdoc             'man mdoc'\n.Qq                      \"\"\n.Qq string ) ,           \"string\"),\n.Qq string Ns ),         \"string),\"\n.Sq                      ''\n.Sq string               'string'\n.Em or Ap ing            or'ing\n\nFor a good example of nested enclosure macros, see the '.Op' option\nmacro.  It was created from the same underlying enclosure macros as those\npresented in the list above.  The '.Xo' and '.Xc' extended argument list\nmacros are discussed below.\n\nNo-Op or Normal Text Macro\nThe '.No' macro can be used in a macro command line for parameters which\nshould not be formatted.  Be careful to add '\\&' to the word 'No' if you\nreally want that English word (and not the macro) as a parameter.\n\nUsage: .No <argument> ...\n\n.No test Ta with Ta tabs  test     with     tabs\n\nThe default width is 12n.\n\nNo-Space Macro\nThe '.Ns' macro suppresses insertion of a space between the current posi-\ntion and its first parameter.  For example, it is useful for old style\nargument lists where there is no space between the flag and argument:\n\nUsage: ... <argument> Ns [<argument>] ...\n.Ns <argument> ...\n\n.Op Fl I Ns Ar directory  [-Idirectory]\n\nNote: The '.Ns' macro always invokes the '.No' macro after eliminating\nthe space unless another macro name follows it.  If used as a command\n(i.e., the second form above in the 'Usage' line), '.Ns' is identical to\n'.No'.\n\nSection Cross References\nThe '.Sx' macro designates a reference to a section header within the\nsame document.\n\nUsage: .Sx <section reference> ...\n\n.Sx FILES  FILES\n\nThe default width is 16n.\n\nSymbolics\nThe symbolic emphasis macro is generally a boldface macro in either the\nsymbolic sense or the traditional English usage.\n\nUsage: .Sy <symbol> ...\n\n.Sy Important Notice  Important Notice\n\nThe default width is 6n.\n\nMathematical Symbols\nUse this macro for mathematical symbols and similar things.\n\nUsage: .Ms <math symbol> ...\n\n.Ms sigma  sigma\n\nThe default width is 6n.\n\nReferences and Citations\nThe following macros make a modest attempt to handle references.  At\nbest, the macros make it convenient to manually drop in a subset of\nrefer(1) style references.\n\n.Rs     Reference start (does not take arguments).  Causes a line\nbreak in the SEE ALSO section and begins collection of ref-\nerence information until the reference end macro is read.\n.Re     Reference end (does not take arguments).  The reference is\nprinted.\n.%A     Reference author name; one name per invocation.\n.%B     Book title.\n.%C     City/place.\n.%D     Date.\n.%I     Issuer/publisher name.\n.%J     Journal name.\n.%N     Issue number.\n.%O     Optional information.\n.%P     Page number.\n.%Q     Corporate or foreign author.\n.%R     Report name.\n.%T     Title of article.\n.%U     Optional hypertext reference.\n.%V     Volume.\n\nMacros beginning with '%' are not callable but accept multiple arguments\nin the usual way.  Only the '.Tn' macro is handled properly as a parame-\nter; other macros will cause strange output.  '.%B' and '.%T' can be used\noutside of the '.Rs/.Re' environment.\n\nExample:\n\n.Rs\n.%A \"Matthew Bar\"\n.%A \"John Foo\"\n.%T \"Implementation Notes on foobar(1)\"\n.%R \"Technical Report ABC-DE-12-345\"\n.%Q \"Drofnats College\"\n.%C \"Nowhere\"\n.%D \"April 1991\"\n.Re\n\nproduces\n\nMatthew Bar and John Foo, Implementation Notes on foobar(1),\nTechnical Report ABC-DE-12-345, Drofnats College, Nowhere, April\n1991.\n\nTrade Names (or Acronyms and Type Names)\nThe trade name macro prints its arguments in a smaller font.  Its in-\ntended use is to imitate a small caps fonts for uppercase acronyms.\n\nUsage: .Tn <symbol> ...\n\n.Tn DEC    DEC\n.Tn ASCII  ASCII\n\nThe default width is 10n.\n\nExtended Arguments\nThe .Xo and .Xc macros allow one to extend an argument list on a macro\nboundary for the '.It' macro (see below).  Note that .Xo and .Xc are im-\nplemented similarly to all other macros opening and closing an enclosure\n(without inserting characters, of course).  This means that the following\nis true for those macros also.\n\nHere is an example of '.Xo' using the space mode macro to turn spacing\noff:\n\n.Sm off\n.It Xo Sy I Ar operation\n.No \\en Ar count No \\en\n.Xc\n.Sm on\n\nproduces\n\nIoperation\\ncount\\n\n\nAnother one:\n\n.Sm off\n.It Cm S No / Ar oldpattern Xo\n.No / Ar newpattern\n.No / Op Cm g\n.Xc\n.Sm on\n\nproduces\n\nS/oldpattern/newpattern/[g]\n\nAnother example of '.Xo' and enclosure macros: Test the value of a vari-\nable.\n\n.It Xo\n.Ic .ifndef\n.Oo \\&! Oc Ns Ar variable Oo\n.Ar operator variable ...\n.Oc Xc\n\nproduces\n\n.ifndef [!]variable [operator variable ...]\n",
                "subsections": []
            },
            "PAGE STRUCTURE DOMAIN": {
                "content": "Section Headers\nThe following '.Sh' section header macros are required in every man page.\nThe remaining section headers are recommended at the discretion of the\nauthor writing the manual page.  The '.Sh' macro is parsed but not gener-\nally callable.  It can be used as an argument in a call to '.Sh' only; it\nthen reactivates the default font for '.Sh'.\n\nThe default width is 8n.\n\n.Sh NAME           The '.Sh NAME' macro is mandatory.  If not specified,\nheaders, footers and page layout defaults will not be\nset and things will be rather unpleasant.  The NAME\nsection consists of at least three items.  The first\nis the '.Nm' name macro naming the subject of the man\npage.  The second is the name description macro,\n'.Nd', which separates the subject name from the third\nitem, which is the description.  The description\nshould be the most terse and lucid possible, as the\nspace available is small.\n\n'.Nd' first prints '-', then all its arguments.\n\n.Sh LIBRARY        This section is for section two and three function\ncalls.  It should consist of a single '.Lb' macro\ncall; see Library Names.\n\n.Sh SYNOPSIS       The SYNOPSIS section describes the typical usage of\nthe subject of a man page.  The macros required are\neither '.Nm', '.Cd', or '.Fn' (and possibly '.Fo',\n'.Fc', '.Fd', and '.Ft').  The function name macro\n'.Fn' is required for manual page sections 2 and 3;\nthe command and general name macro '.Nm' is required\nfor sections 1, 5, 6, 7, and 8.  Section 4 manuals re-\nquire a '.Nm', '.Fd' or a '.Cd' configuration device\nusage macro.  Several other macros may be necessary to\nproduce the synopsis line as shown below:\n\ncat [-benstuv] [-] file ...\n\nThe following macros were used:\n\n.Nm cat\n.Op Fl benstuv\n.Op Fl\n.Ar\n\n.Sh DESCRIPTION    In most cases the first text in the DESCRIPTION sec-\ntion is a brief paragraph on the command, function or\nfile, followed by a lexical list of options and re-\nspective explanations.  To create such a list, the\n'.Bl' (begin list), '.It' (list item) and '.El' (end\nlist) macros are used (see Lists and Columns below).\n\n.Sh IMPLEMENTATION NOTES\nImplementation specific information should be placed\nhere.\n\n.Sh RETURN VALUES  Sections 2, 3 and 9 function return values should go\nhere.  The '.Rv' macro may be used to generate text\nfor use in the RETURN VALUES section for most section\n2 and 3 library functions; see Return Values.\n\nThe following '.Sh' section headers are part of the preferred manual page\nlayout and must be used appropriately to maintain consistency.  They are\nlisted in the order in which they would be used.\n\n.Sh ENVIRONMENT    The ENVIRONMENT section should reveal any related en-\nvironment variables and clues to their behavior and/or\nusage.\n\n.Sh FILES          Files which are used or created by the man page sub-\nject should be listed via the '.Pa' macro in the FILES\nsection.\n\n.Sh EXAMPLES       There are several ways to create examples.  See the\nExamples and Displays section below for details.\n\n.Sh DIAGNOSTICS    Diagnostic messages from a command should be placed in\nthis section.  The '.Ex' macro may be used to generate\ntext for use in the DIAGNOSTICS section for most sec-\ntion 1, 6 and 8 commands; see Exit Status.\n\n.Sh COMPATIBILITY  Known compatibility issues (e.g. deprecated options or\nparameters) should be listed here.\n\n.Sh ERRORS         Specific error handling, especially from library func-\ntions (man page sections 2, 3, and 9) should go here.\nThe '.Er' macro is used to specify an error (errno).\n\n.Sh SEE ALSO       References to other material on the man page topic and\ncross references to other relevant man pages should be\nplaced in the SEE ALSO section.  Cross references are\nspecified using the '.Xr' macro.  Currently refer(1)\nstyle references are not accommodated.\n\nIt is recommended that the cross references are sorted\non the section number, then alphabetically on the\nnames within a section, and placed in that order and\ncomma separated.  Example:\n\nls(1), ps(1), group(5), passwd(5)\n\n.Sh STANDARDS      If the command, library function or file adheres to a\nspecific implementation such as IEEE Std 1003.2\n(\"POSIX.2\") or ANSI X3.159-1989 (\"ANSI C89\") this\nshould be noted here.  If the command does not adhere\nto any standard, its history should be noted in the\nHISTORY section.\n\n.Sh HISTORY        Any command which does not adhere to any specific\nstandards should be outlined historically in this sec-\ntion.\n\n.Sh AUTHORS        Credits should be placed here.  Use the '.An' macro\nfor names and the '.Aq' macro for e-mail addresses\nwithin optional contact information.  Explicitly indi-\ncate whether the person authored the initial manual\npage or the software or whatever the person is being\ncredited for.\n\n.Sh BUGS           Blatant problems with the topic go here.\n\nUser-specified '.Sh' sections may be added; for example, this section was\nset with:\n\n.Sh \"PAGE STRUCTURE DOMAIN\"\n\nSubsection Headers\nSubsection headers have exactly the same syntax as section headers: '.Ss'\nis parsed but not generally callable.  It can be used as an argument in a\ncall to '.Ss' only; it then reactivates the default font for '.Ss'.\n\nThe default width is 8n.\n\nParagraphs and Line Spacing\n.Pp  The '.Pp' paragraph command may be used to specify a line space\nwhere necessary.  The macro is not necessary after a '.Sh' or '.Ss'\nmacro or before a '.Bl' or '.Bd' macro (which both assert a vertical\ndistance unless the -compact flag is given).\n\nThe macro is neither callable nor parsed and takes no arguments; an\nalternative name is '.Lp'.\n\nKeeps\nThe only keep that is implemented at this time is for words.  The macros\nare '.Bk' (begin keep) and '.Ek' (end keep).  The only option that '.Bk'\naccepts currently is -words (this is also the default if no option is\ngiven) which is useful for preventing line breaks in the middle of op-\ntions.  In the example for the make command-line arguments (see What's in\na Name), the keep prevented nroff from placing up the flag and the argu-\nment on separate lines.\n\nBoth macros are neither callable nor parsed.\n\nMore work needs to be done with the keep macros; specifically, a -line\noption should be added.\n\nExamples and Displays\nThere are seven types of displays.\n\n.D1  (This is D-one.)  Display one line of indented text.  This macro is\nparsed but not callable.\n\n-ldghfstru\n\nThe above was produced by: .D1 Fl ldghfstru.\n\n.Dl  (This is D-ell.)  Display one line of indented literal text.  The\n'.Dl' example macro has been used throughout this file.  It allows\nthe indentation (display) of one line of text.  Its default font is\nset to constant width (literal).  '.Dl' is parsed but not callable.\n\n% ls -ldg /usr/local/bin\n\nThe above was produced by: .Dl % ls \\-ldg /usr/local/bin.\n\n.Bd  Begin display.  The '.Bd' display must be ended with the '.Ed'\nmacro.  It has the following syntax:\n\n.Bd {-literal | -filled | -unfilled | -ragged | -centered}\n[-offset <string>] [-file <file name>] [-compact]\n\n-ragged            Fill, but do not adjust the right margin (only\nleft-justify).\n-centered          Center lines between the current left and right\nmargin.  Note that each single line is centered.\n-unfilled          Do not fill; display a block of text as typed,\nusing line breaks as specified by the user.  This\ncan produce overlong lines without warning mes-\nsages.\n-filled            Display a filled block.  The block of text is\nformatted (i.e., the text is justified on both\nthe left and right side).\n-literal           Display block with literal font (usually fixed-\nwidth).  Useful for source code or simple tabbed\nor spaced text.\n-file <file name>  The file whose name follows the -file flag is\nread and displayed before any data enclosed with\n'.Bd' and '.Ed', using the selected display type.\nAny troff/-mdoc commands in the file will be pro-\ncessed.\n-offset <string>   If -offset is specified with one of the following\nstrings, the string is interpreted to indicate\nthe level of indentation for the forthcoming\nblock of text:\n\nleft        Align block on the current left mar-\ngin; this is the default mode of\n'.Bd'.\ncenter      Supposedly center the block.  At this\ntime unfortunately, the block merely\ngets left aligned about an imaginary\ncenter margin.\nindent      Indent by one default indent value or\ntab.  The default indent value is\nalso used for the '.D1' and '.Dl'\nmacros, so one is guaranteed the two\ntypes of displays will line up.  The\nindentation value is normally set\nto 6n or about two thirds of an inch\n(six constant width characters).\nindent-two  Indent two times the default indent\nvalue.\nright       This left aligns the block about two\ninches from the right side of the\npage.  This macro needs work and per-\nhaps may never do the right thing\nwithin troff.\n\nIf <string> is a valid numeric expression instead\n(with a scale indicator other than 'u'), use that\nvalue for indentation.  The most useful scale in-\ndicators are 'm' and 'n', specifying the so-\ncalled Em and En square.  This is approximately\nthe width of the letters 'm' and 'n' respectively\nof the current font (for nroff output, both scale\nindicators give the same values).  If <string>\nisn't a numeric expression, it is tested whether\nit is an -mdoc macro name, and the default offset\nvalue associated with this macro is used.  Fi-\nnally, if all tests fail, the width of <string>\n(typeset with a fixed-width font) is taken as the\noffset.\n-compact           Suppress insertion of vertical space before begin\nof display.\n\n.Ed  End display (takes no arguments).\n\nLists and Columns\nThere are several types of lists which may be initiated with the '.Bl'\nbegin-list macro.  Items within the list are specified with the '.It'\nitem macro, and each list must end with the '.El' macro.  Lists may be\nnested within themselves and within displays.  The use of columns inside\nof lists or lists inside of columns is unproven.\n\nIn addition, several list attributes may be specified such as the width\nof a tag, the list offset, and compactness (blank lines between items al-\nlowed or disallowed).  Most of this document has been formatted with a\ntag style list (-tag).\n\nIt has the following syntax forms:\n\n.Bl {-hang | -ohang | -tag | -diag | -inset} [-width <string>]\n[-offset <string>] [-compact]\n.Bl -column [-offset <string>] <string1> <string2> ...\n.Bl {-item | -enum [-nested] | -bullet | -hyphen | -dash} [-offset\n<string>] [-compact]\n\nAnd now a detailed description of the list types.\n\n-bullet  A bullet list.\n\n.Bl -bullet -offset indent -compact\n.It\nBullet one goes here.\n.It\nBullet two here.\n.El\n\nProduces:\n\no   Bullet one goes here.\no   Bullet two here.\n\n-dash (or -hyphen)\nA dash list.\n\n.Bl -dash -offset indent -compact\n.It\nDash one goes here.\n.It\nDash two here.\n.El\n\nProduces:\n\n-   Dash one goes here.\n-   Dash two here.\n\n-enum    An enumerated list.\n\n.Bl -enum -offset indent -compact\n.It\nItem one goes here.\n.It\nAnd item two here.\n.El\n\nThe result:\n\n1.   Item one goes here.\n2.   And item two here.\n\nIf you want to nest enumerated lists, use the -nested flag\n(starting with the second-level list):\n\n.Bl -enum -offset indent -compact\n.It\nItem one goes here\n.Bl -enum -nested -compact\n.It\nItem two goes here.\n.It\nAnd item three here.\n.El\n.It\nAnd item four here.\n.El\n\nResult:\n\n1.   Item one goes here.\n1.1.   Item two goes here.\n1.2.   And item three here.\n2.   And item four here.\n\n-item    A list of type -item without list markers.\n\n.Bl -item -offset indent\n.It\nItem one goes here.\nItem one goes here.\nItem one goes here.\n.It\nItem two here.\nItem two here.\nItem two here.\n.El\n\nProduces:\n\nItem one goes here.  Item one goes here.  Item one goes\nhere.\n\nItem two here.  Item two here.  Item two here.\n\n-tag     A list with tags.  Use -width to specify the tag width.\n\nSL    sleep time of the process (seconds blocked)\nPAGEIN\nnumber of disk I/O's resulting from references by\nthe process to pages not loaded in core.\nUID   numerical user-id of process owner\nPPID  numerical id of parent of process priority (non-pos-\nitive when in non-interruptible wait)\n\nThe raw text:\n\n.Bl -tag -width \"PPID\" -compact -offset indent\n.It SL\nsleep time of the process (seconds blocked)\n.It PAGEIN\nnumber of disk\n.Tn I/O Ns 's\nresulting from references by the process\nto pages not loaded in core.\n.It UID\nnumerical user-id of process owner\n.It PPID\nnumerical id of parent of process priority\n(non-positive when in non-interruptible wait)\n.El\n\n-diag    Diag lists create section four diagnostic lists and are similar\nto inset lists except callable macros are ignored.  The -width\nflag is not meaningful in this context.\n\nExample:\n\n.Bl -diag\n.It You can't use Sy here.\nThe message says all.\n.El\n\nproduces\n\nYou can't use Sy here.  The message says all.\n\n-hang    A list with hanging tags.\n\nHanged  labels appear similar to tagged lists when the la-\nbel is smaller than the label width.\n\nLonger hanged list labels blend into the paragraph unlike\ntagged paragraph labels.\n\nAnd the unformatted text which created it:\n\n.Bl -hang -offset indent\n.It Em Hanged\nlabels appear similar to tagged lists when the\nlabel is smaller than the label width.\n.It Em Longer hanged list labels\nblend into the paragraph unlike\ntagged paragraph labels.\n.El\n\n-ohang   Lists with overhanging tags do not use indentation for the\nitems; tags are written to a separate line.\n\nSL\nsleep time of the process (seconds blocked)\n\nPAGEIN\nnumber of disk I/O's resulting from references by the\nprocess to pages not loaded in core.\n\nUID\nnumerical user-id of process owner\n\nPPID\nnumerical id of parent of process priority (non-positive\nwhen in non-interruptible wait)\n\nThe raw text:\n\n.Bl -ohang -offset indent\n.It Sy SL\nsleep time of the process (seconds blocked)\n.It Sy PAGEIN\nnumber of disk\n.Tn I/O Ns 's\nresulting from references by the process\nto pages not loaded in core.\n.It Sy UID\nnumerical user-id of process owner\n.It Sy PPID\nnumerical id of parent of process priority\n(non-positive when in non-interruptible wait)\n.El\n\n-inset   Here is an example of inset labels:\n\nTag The tagged list (also called a tagged paragraph) is\nthe most common type of list used in the Berkeley manuals.\nUse a -width attribute as described below.\n\nDiag Diag lists create section four diagnostic lists and\nare similar to inset lists except callable macros are ig-\nnored.\n\nHang Hanged labels are a matter of taste.\n\nOhang Overhanging labels are nice when space is con-\nstrained.\n\nInset Inset labels are useful for controlling blocks of\nparagraphs and are valuable for converting -mdoc manuals\nto other formats.\n\nHere is the source text which produced the above example:\n\n.Bl -inset -offset indent\n.It Em Tag\nThe tagged list (also called a tagged paragraph)\nis the most common type of list used in the\nBerkeley manuals.\n.It Em Diag\nDiag lists create section four diagnostic lists\nand are similar to inset lists except callable\nmacros are ignored.\n.It Em Hang\nHanged labels are a matter of taste.\n.It Em Ohang\nOverhanging labels are nice when space is constrained.\n.It Em Inset\nInset labels are useful for controlling blocks of\nparagraphs and are valuable for converting\n.Nm -mdoc\nmanuals to other formats.\n.El\n\n-column  This list type generates multiple columns.  The number of col-\numns and the width of each column is determined by the arguments\nto the -column list, <string1>, <string2>, etc.  If <stringN>\nstarts with a '.' (dot) immediately followed by a valid -mdoc\nmacro name, interpret <stringN> and use the width of the result.\nOtherwise, the width of <stringN> (typeset with a fixed-width\nfont) is taken as the Nth column width.\n\nEach '.It' argument is parsed to make a row, each column within\nthe row is a separate argument separated by a tab or the '.Ta'\nmacro.\n\nThe table:\n\nString    Nroff    Troff\n<=        <=       <=\n>=        >=       >=\n\nwas produced by:\n\n.Bl -column -offset indent \".Sy String\" \".Sy Nroff\" \".Sy Troff\"\n.It Sy String Ta Sy Nroff Ta Sy Troff\n.It Li <= Ta <= Ta \\*(<=\n.It Li >= Ta >= Ta \\*(>=\n.El\n\nDon't abuse this list type!  For more complicated cases it might\nbe far better and easier to use tbl(1), the table preprocessor.\n\nOther keywords:\n\n-width <string>   If <string> starts with a '.' (dot) immediately fol-\nlowed by a valid -mdoc macro name, interpret <string>\nand use the width of the result.  Almost all lists in\nthis document use this option.\n\nExample:\n\n.Bl -tag -width \".Fl test Ao Ar string Ac\"\n.It Fl test Ao Ar string Ac\nThis is a longer sentence to show how the\n.Fl width\nflag works in combination with a tag list.\n.El\n\ngives:\n\n-test <string>  This is a longer sentence to show how\nthe -width flag works in combination\nwith a tag list.\n\n(Note that the current state of -mdoc is saved before\n<string> is interpreted; afterwards, all variables are\nrestored again.  However, boxes (used for enclosures)\ncan't be saved in GNU troff(1); as a consequence, argu-\nments must always be balanced to avoid nasty errors.\nFor example, do not write '.Ao Ar string' but '.Ao Ar\nstring Xc' instead if you really need only an opening\nangle bracket.)\n\nOtherwise, if <string> is a valid numeric expression\n(with a scale indicator other than 'u'), use that value\nfor indentation.  The most useful scale indicators are\n'm' and 'n', specifying the so-called Em and En square.\nThis is approximately the width of the letters 'm' and\n'n' respectively of the current font (for nroff output,\nboth scale indicators give the same values).  If\n<string> isn't a numeric expression, it is tested\nwhether it is an -mdoc macro name, and the default\nwidth value associated with this macro is used.  Fi-\nnally, if all tests fail, the width of <string> (type-\nset with a fixed-width font) is taken as the width.\n\nIf a width is not specified for the tag list type, '6n'\nis used.\n\n-offset <string>  If <string> is indent, a default indent value (normally\nset to 6n, similar to the value used in '.Dl' or '.Bd')\nis used.  If <string> is a valid numeric expression in-\nstead (with a scale indicator other than 'u'), use that\nvalue for indentation.  The most useful scale indica-\ntors are 'm' and 'n', specifying the so-called Em and\nEn square.  This is approximately the width of the let-\nters 'm' and 'n' respectively of the current font (for\nnroff output, both scale indicators give the same val-\nues).  If <string> isn't a numeric expression, it is\ntested whether it is an -mdoc macro name, and the de-\nfault offset value associated with this macro is used.\nFinally, if all tests fail, the width of <string>\n(typeset with a fixed-width font) is taken as the off-\nset.\n\n-compact          Suppress insertion of vertical space before the list\nand between list items.\n",
                "subsections": []
            },
            "MISCELLANEOUS MACROS": {
                "content": "Here a list of the remaining macros which do not fit well into one of the\nabove sections.  We couldn't find real examples for the following macros:\n'.Me' and '.Ot'.  They are documented here for completeness - if you know\nhow to use them properly please send a mail to groff@gnu.org (including\nan example).\n\n.Bt  prints\n\nis currently in beta test.\n\nIt is neither callable nor parsed and takes no arguments.\n\n.Fr\n\nUsage: .Fr <function return value> ...\n\nDon't use this macro.  It allows a break right before the return\nvalue (usually a single digit) which is bad typographical behaviour.\nUse '\\~' to tie the return value to the previous word.\n\n.Hf  Use this macro to include a (header) file literally.  It first\nprints 'File:' followed by the file name, then the contents of\n<file>.\n\nUsage: .Hf <file>\n\nIt is neither callable nor parsed.\n\n.Lk  To be written.\n\n.Me  Exact usage unknown.  The documentation in the -mdoc source file de-\nscribes it as a macro for \"menu entries\".\n\nIts default width is 6n.\n\n.Mt  To be written.\n\n.Ot  Exact usage unknown.  The documentation in the -mdoc source file de-\nscribes it as \"old function type (fortran)\".\n\n.Sm  Activate (toggle) space mode.\n\nUsage: .Sm [on | off] ...\n\nIf space mode is off, no spaces between macro arguments are in-\nserted.  If called without a parameter (or if the next parameter is\nneither 'on' nor 'off', '.Sm' toggles space mode.\n\n.Ud  prints\n\ncurrently under development.\n\nIt is neither callable nor parsed and takes no arguments.\n",
                "subsections": []
            },
            "PREDEFINED STRINGS": {
                "content": "The following strings are predefined:\n\nString   Nroff      Troff      Meaning\n<=       <=         <=         less equal\n>=       >=         >=         greater equal\nRq       ''         \"          right double quote\nLq       ``         \"          left double quote\nua       ^          ^          upwards arrow\naa       '          '          acute accent\nga       `          `          grave accent\nq        \"          \"          straight double quote\nPi       pi         pi         greek pi\nNe       !=         !=         not equal\nLe       <=         <=         less equal\nGe       >=         >=         greater equal\nLt       <          <          less than\nGt       >          >          greater than\nPm       +-         +-         plus minus\nIf       infinity   infinity   infinity\nAm       &          &          ampersand\nNa       NaN        NaN        not a number\nBa       |          |          vertical bar\n\nThe names of the columns Nroff and Troff are a bit misleading; Nroff\nshows the ASCII representation, while Troff gives the best glyph form\navailable.  For example, a Unicode enabled TTY-device will have proper\nglyph representations for all strings, whereas the enhancement for a\nLatin1 TTY-device is only the plus-minus sign.\n\nString names which consist of two characters can be written as '\\*(xx';\nstring names which consist of one character can be written as '\\*x'.  A\ngeneric syntax for a string name of any length is '\\*[xxx]' (this is a\nGNU troff(1) extension).\n",
                "subsections": []
            },
            "DIAGNOSTICS": {
                "content": "The debugging macro '.Db' available in previous versions of -mdoc has\nbeen removed since GNU troff(1) provides better facilities to check pa-\nrameters; additionally, many error and warning messages have been added\nto this macro package, making it both more robust and verbose.\n\nThe only remaining debugging macro is '.Rd' which yields a register dump\nof all global registers and strings.  A normal user will never need it.\n\nFORMATTING WITH GROFF, TROFF, AND NROFF\nBy default, the package inhibits page breaks, headers, and footers if\ndisplayed with a TTY device like 'latin1' or 'unicode', to make the man-\nual more efficient for viewing on-line.  This behaviour can be changed\n(e.g. to create a hardcopy of the TTY output) by setting the register\n'cR' to zero while calling groff(1), resulting in multiple pages instead\nof a single, very long page:\n\ngroff -Tlatin1 -rcR=0 -mdoc foo.man > foo.txt\n\nFor double-sided printing, set register 'D' to 1:\n\ngroff -Tps -rD1 -mdoc foo.man > foo.ps\n\nTo change the document font size to 11pt or 12pt, set register 'S' ac-\ncordingly:\n\ngroff -Tdvi -rS11 -mdoc foo.man > foo.dvi\n\nRegister 'S' is ignored for TTY devices.\n\nThe line and title length can be changed by setting the registers 'LL'\nand 'LT', respectively:\n\ngroff -Tutf8 -rLL=100n -rLT=100n -mdoc foo.man | less\n\nIf not set, both registers default to 78n for TTY devices and 6.5i other-\nwise.\n",
                "subsections": []
            },
            "FILES": {
                "content": "doc.tmac          The main manual macro package.\nmdoc.tmac         A wrapper file to call doc.tmac.\nmdoc/doc-common   Common strings, definitions, stuff related typographic\noutput.\nmdoc/doc-nroff    Definitions used for a TTY output device.\nmdoc/doc-ditroff  Definitions used for all other devices.\nmdoc.local        Local additions and customizations.\nandoc.tmac        Use this file if you don't know whether the -mdoc or\nthe -man package should be used.  Multiple man pages\n(in either format) can be handled.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "groff(1), man(1), troff(1), groffman(7)\n",
                "subsections": []
            },
            "BUGS": {
                "content": "Section 3f has not been added to the header routines.\n\n'.Nm' font should be changed in NAME section.\n\n'.Fn' needs to have a check to prevent splitting up if the line length is\ntoo short.  Occasionally it separates the last parenthesis, and sometimes\nlooks ridiculous if a line is in fill mode.\n\nThe list and display macros do not do any keeps and certainly should be\nable to.\n\nBSD                            November 2, 2010                            BSD",
                "subsections": []
            }
        }
    }
}