{
    "content": [
        {
            "type": "text",
            "text": "# M4 (man)\n\n## NAME\n\nm4 - macro processor\n\n## SYNOPSIS\n\nm4 [OPTION]... [FILE]...\n\n## DESCRIPTION\n\nProcess macros in FILEs.  If no FILE or if FILE is `-', standard input is read.\n\n## TLDR\n\n> Macro processor.\n\n- Process macros in a file:\n  `m4 {{path/to/file}}`\n- Define a macro before processing files:\n  `m4 {{-D|--define}} {{macro_name}}={{macro_value}} {{path/to/file}}`\n\n*Source: tldr-pages*\n\n## Sections\n\n- **NAME**\n- **SYNOPSIS**\n- **DESCRIPTION** (25 subsections)\n- **AUTHOR**\n- **REPORTING BUGS**\n- **COPYRIGHT**\n- **SEE ALSO**\n\nUse structuredContent.sections for detailed options, examples, and full documentation.\n"
        }
    ],
    "structuredContent": {
        "command": "M4",
        "section": "",
        "mode": "man",
        "summary": "m4 - macro processor",
        "synopsis": "m4 [OPTION]... [FILE]...",
        "tldr_summary": "Macro processor.",
        "tldr_examples": [
            {
                "description": "Process macros in a file",
                "command": "m4 {{path/to/file}}"
            },
            {
                "description": "Define a macro before processing files",
                "command": "m4 {{-D|--define}} {{macro_name}}={{macro_value}} {{path/to/file}}"
            }
        ],
        "tldr_source": "official",
        "flags": [
            {
                "flag": "",
                "long": "--version",
                "arg": null,
                "description": "output version information and exit"
            },
            {
                "flag": "-E",
                "long": "--fatal-warnings",
                "arg": null,
                "description": "once: warnings become errors, twice: stop execution at first error"
            },
            {
                "flag": "-i",
                "long": "--interactive",
                "arg": null,
                "description": "unbuffer output, ignore interrupts"
            },
            {
                "flag": "-P",
                "long": "--prefix-builtins",
                "arg": null,
                "description": "force a `m4' prefix to all builtins"
            },
            {
                "flag": "-Q",
                "long": "--silent",
                "arg": null,
                "description": "suppress some warnings for builtins --warn-macro-sequence[=REGEXP] warn if macro definition matches REGEXP, default \\$\\({[^}]*}\\|[0-9][0-9]+\\)"
            },
            {
                "flag": "-W",
                "long": "--word-regexp",
                "arg": null,
                "description": "use REGEXP for macro name syntax"
            },
            {
                "flag": "-D",
                "long": "--define",
                "arg": "NAME",
                "description": "define NAME as having VALUE, or empty"
            },
            {
                "flag": "-I",
                "long": "--include",
                "arg": null,
                "description": "append DIRECTORY to include path"
            },
            {
                "flag": "-s",
                "long": "--synclines",
                "arg": null,
                "description": "generate `#line NUM \"FILE\"' lines"
            },
            {
                "flag": "-U",
                "long": "--undefine",
                "arg": null,
                "description": "undefine NAME"
            },
            {
                "flag": "-g",
                "long": "--gnu",
                "arg": null,
                "description": "override -G to re-enable GNU extensions"
            },
            {
                "flag": "-G",
                "long": "--traditional",
                "arg": null,
                "description": "suppress all GNU extensions"
            },
            {
                "flag": "-H",
                "long": "--hashsize",
                "arg": null,
                "description": "set symbol lookup hash table size [509]"
            },
            {
                "flag": "-L",
                "long": "--nesting-limit",
                "arg": null,
                "description": "change nesting limit, 0 for unlimited [0]"
            },
            {
                "flag": "-F",
                "long": "--freeze-state",
                "arg": null,
                "description": "produce a frozen state on FILE at end"
            },
            {
                "flag": "-R",
                "long": "--reload-state",
                "arg": null,
                "description": "reload a frozen state from FILE at start"
            },
            {
                "flag": "-d",
                "long": "--debug",
                "arg": null,
                "description": "set debug level (no FLAGS implies `aeq') --debugfile[=FILE] redirect debug and trace output to FILE (default stderr, discard if empty string)"
            },
            {
                "flag": "-l",
                "long": "--arglength",
                "arg": null,
                "description": "restrict macro tracing size"
            },
            {
                "flag": "-t",
                "long": "--trace",
                "arg": null,
                "description": "trace NAME when it is defined"
            }
        ],
        "examples": [],
        "see_also": [],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 5,
                "subsections": [
                    {
                        "name": "Operation modes:",
                        "lines": 2
                    },
                    {
                        "name": "--version",
                        "lines": 2,
                        "long": "--version"
                    },
                    {
                        "name": "-E --fatal-warnings",
                        "lines": 2,
                        "flag": "-E",
                        "long": "--fatal-warnings"
                    },
                    {
                        "name": "-i --interactive",
                        "lines": 2,
                        "flag": "-i",
                        "long": "--interactive"
                    },
                    {
                        "name": "-P --prefix-builtins",
                        "lines": 2,
                        "flag": "-P",
                        "long": "--prefix-builtins"
                    },
                    {
                        "name": "-Q --quiet --silent",
                        "lines": 7,
                        "flag": "-Q",
                        "long": "--silent"
                    },
                    {
                        "name": "-W --word-regexp",
                        "lines": 2,
                        "flag": "-W",
                        "long": "--word-regexp"
                    },
                    {
                        "name": "Preprocessor features:",
                        "lines": 1
                    },
                    {
                        "name": "-D --define=NAME",
                        "lines": 2,
                        "flag": "-D",
                        "long": "--define",
                        "arg": "NAME"
                    },
                    {
                        "name": "-I --include",
                        "lines": 2,
                        "flag": "-I",
                        "long": "--include"
                    },
                    {
                        "name": "-s --synclines",
                        "lines": 2,
                        "flag": "-s",
                        "long": "--synclines"
                    },
                    {
                        "name": "-U --undefine",
                        "lines": 2,
                        "flag": "-U",
                        "long": "--undefine"
                    },
                    {
                        "name": "Limits control:",
                        "lines": 1
                    },
                    {
                        "name": "-g --gnu",
                        "lines": 2,
                        "flag": "-g",
                        "long": "--gnu"
                    },
                    {
                        "name": "-G --traditional",
                        "lines": 2,
                        "flag": "-G",
                        "long": "--traditional"
                    },
                    {
                        "name": "-H --hashsize",
                        "lines": 2,
                        "flag": "-H",
                        "long": "--hashsize"
                    },
                    {
                        "name": "-L --nesting-limit",
                        "lines": 2,
                        "flag": "-L",
                        "long": "--nesting-limit"
                    },
                    {
                        "name": "Frozen state files:",
                        "lines": 1
                    },
                    {
                        "name": "-F --freeze-state",
                        "lines": 2,
                        "flag": "-F",
                        "long": "--freeze-state"
                    },
                    {
                        "name": "-R --reload-state",
                        "lines": 2,
                        "flag": "-R",
                        "long": "--reload-state"
                    },
                    {
                        "name": "Debugging:",
                        "lines": 1
                    },
                    {
                        "name": "-d --debug",
                        "lines": 5,
                        "flag": "-d",
                        "long": "--debug"
                    },
                    {
                        "name": "-l --arglength",
                        "lines": 2,
                        "flag": "-l",
                        "long": "--arglength"
                    },
                    {
                        "name": "-t --trace",
                        "lines": 2,
                        "flag": "-t",
                        "long": "--trace"
                    },
                    {
                        "name": "FLAGS is any of:",
                        "lines": 28
                    }
                ]
            },
            {
                "name": "AUTHOR",
                "lines": 2,
                "subsections": []
            },
            {
                "name": "REPORTING BUGS",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "COPYRIGHT",
                "lines": 5,
                "subsections": []
            },
            {
                "name": "SEE ALSO",
                "lines": 8,
                "subsections": []
            }
        ],
        "sections": {
            "NAME": {
                "content": "m4 - macro processor\n",
                "subsections": []
            },
            "SYNOPSIS": {
                "content": "m4 [OPTION]... [FILE]...\n",
                "subsections": []
            },
            "DESCRIPTION": {
                "content": "Process macros in FILEs.  If no FILE or if FILE is `-', standard input is read.\n\nMandatory  or  optional arguments to long options are mandatory or optional for short options\ntoo.\n",
                "subsections": [
                    {
                        "name": "Operation modes:",
                        "content": "--help display this help and exit\n"
                    },
                    {
                        "name": "--version",
                        "content": "output version information and exit\n",
                        "long": "--version"
                    },
                    {
                        "name": "-E --fatal-warnings",
                        "content": "once: warnings become errors, twice: stop execution at first error\n",
                        "flag": "-E",
                        "long": "--fatal-warnings"
                    },
                    {
                        "name": "-i --interactive",
                        "content": "unbuffer output, ignore interrupts\n",
                        "flag": "-i",
                        "long": "--interactive"
                    },
                    {
                        "name": "-P --prefix-builtins",
                        "content": "force a `m4' prefix to all builtins\n",
                        "flag": "-P",
                        "long": "--prefix-builtins"
                    },
                    {
                        "name": "-Q --quiet --silent",
                        "content": "suppress some warnings for builtins\n\n--warn-macro-sequence[=REGEXP]\nwarn if macro definition matches REGEXP,\n\ndefault \\$\\({[^}]*}\\|[0-9][0-9]+\\)\n",
                        "flag": "-Q",
                        "long": "--silent"
                    },
                    {
                        "name": "-W --word-regexp",
                        "content": "use REGEXP for macro name syntax\n",
                        "flag": "-W",
                        "long": "--word-regexp"
                    },
                    {
                        "name": "Preprocessor features:",
                        "content": ""
                    },
                    {
                        "name": "-D --define=NAME",
                        "content": "define NAME as having VALUE, or empty\n",
                        "flag": "-D",
                        "long": "--define",
                        "arg": "NAME"
                    },
                    {
                        "name": "-I --include",
                        "content": "append DIRECTORY to include path\n",
                        "flag": "-I",
                        "long": "--include"
                    },
                    {
                        "name": "-s --synclines",
                        "content": "generate `#line NUM \"FILE\"' lines\n",
                        "flag": "-s",
                        "long": "--synclines"
                    },
                    {
                        "name": "-U --undefine",
                        "content": "undefine NAME\n",
                        "flag": "-U",
                        "long": "--undefine"
                    },
                    {
                        "name": "Limits control:",
                        "content": ""
                    },
                    {
                        "name": "-g --gnu",
                        "content": "override -G to re-enable GNU extensions\n",
                        "flag": "-g",
                        "long": "--gnu"
                    },
                    {
                        "name": "-G --traditional",
                        "content": "suppress all GNU extensions\n",
                        "flag": "-G",
                        "long": "--traditional"
                    },
                    {
                        "name": "-H --hashsize",
                        "content": "set symbol lookup hash table size [509]\n",
                        "flag": "-H",
                        "long": "--hashsize"
                    },
                    {
                        "name": "-L --nesting-limit",
                        "content": "change nesting limit, 0 for unlimited [0]\n",
                        "flag": "-L",
                        "long": "--nesting-limit"
                    },
                    {
                        "name": "Frozen state files:",
                        "content": ""
                    },
                    {
                        "name": "-F --freeze-state",
                        "content": "produce a frozen state on FILE at end\n",
                        "flag": "-F",
                        "long": "--freeze-state"
                    },
                    {
                        "name": "-R --reload-state",
                        "content": "reload a frozen state from FILE at start\n",
                        "flag": "-R",
                        "long": "--reload-state"
                    },
                    {
                        "name": "Debugging:",
                        "content": ""
                    },
                    {
                        "name": "-d --debug",
                        "content": "set debug level (no FLAGS implies `aeq')\n\n--debugfile[=FILE]\nredirect debug and trace output to FILE (default stderr, discard if empty string)\n",
                        "flag": "-d",
                        "long": "--debug"
                    },
                    {
                        "name": "-l --arglength",
                        "content": "restrict macro tracing size\n",
                        "flag": "-l",
                        "long": "--arglength"
                    },
                    {
                        "name": "-t --trace",
                        "content": "trace NAME when it is defined\n",
                        "flag": "-t",
                        "long": "--trace"
                    },
                    {
                        "name": "FLAGS is any of:",
                        "content": "a      show actual arguments\n\nc      show before collect, after collect and after call\n\ne      show expansion\n\nf      say current input file name\n\ni      show changes in input files\n\nl      say current input line number\n\np      show results of path searches\n\nq      quote values as necessary, with a or e flag\n\nt      trace for all macro calls, not only traceon'ed\n\nx      add a unique macro call id, useful with c flag\n\nV      shorthand for all of the above flags\n\nIf defined, the environment variable `M4PATH' is a colon-separated list  of  directories  in‐\ncluded after any specified by `-I'.\n\nExit status is 0 for success, 1 for failure, 63 for frozen file version mismatch, or whatever\nvalue was passed to the m4exit macro.\n"
                    }
                ]
            },
            "AUTHOR": {
                "content": "Written by Rene' Seindal.\n",
                "subsections": []
            },
            "REPORTING BUGS": {
                "content": "Report bugs to: bug-m4@gnu.org\nGNU M4 home page: <https://www.gnu.org/software/m4/>\nGeneral help using GNU software: <https://www.gnu.org/gethelp/>\n",
                "subsections": []
            },
            "COPYRIGHT": {
                "content": "Copyright  ©  2021 Free Software Foundation, Inc.  License GPLv3+: GNU GPL version 3 or later\n<https://gnu.org/licenses/gpl.html>.\nThis is free software: you are free to change and redistribute it.  There is NO WARRANTY,  to\nthe extent permitted by law.\n",
                "subsections": []
            },
            "SEE ALSO": {
                "content": "The full documentation for m4 is maintained as a Texinfo manual.  If the info and m4 programs\nare properly installed at your site, the command\n\ninfo m4\n\nshould give you access to the complete manual.\n\nGNU M4 1.4.19                                 May 2021                                         M4(1)",
                "subsections": []
            }
        }
    }
}