{
    "content": [
        {
            "type": "text",
            "text": "# fmtutil-user(1) (man)\n\n**Summary:** fmtutil - manage TeX formats and Metafont bases, per-user fmtutil-sys - manage TeX formats and Metafont bases, system-wide mktexfmt - create a TeX format or Metafont base\n\n**Synopsis:** fmtutil [-user|-sys] [OPTION] ... [COMMAND]\nfmtutil-sys [OPTION] ... [COMMAND]\nfmtutil-user [OPTION] ... [COMMAND]\nmktexfmt FORMAT.fmt|BASE.base|FMTNAME\n\n## Flags\n\n| Flag | Long | Arg | Description |\n|------|------|-----|-------------|\n| — | --no-engine-subdir | — | don't use engine-specific subdir of the fmtdir |\n| — | --no-error-if-no-format | — | exit successfully if no format is selected --no-error-if-no-engine=ENGINE1,ENGINE2,... exit successfully even if a requi |\n| — | --no-strict | — | exit successfully even if a format fails to build |\n| — | --nohash | — | don't update ls-R files |\n| — | --recorder | — | pass the -recorder option and save .fls files |\n| — | --refresh | — | recreate only existing format files --status-file FILE append status information about built formats to FILE |\n| — | --quiet | — | be silent |\n| — | --catcfg | — | (does nothing, exists for compatibility) |\n| — | --dolinks | — | (does nothing, exists for compatibility) |\n| — | --force | — | (does nothing, exists for compatibility) --test (does nothing, exists for compatibility) |\n| — | --missing | — | create all missing format files --byengine ENGINE (re)create formats built with ENGINE --byfmt FORMAT (re)create format  |\n| — | --enablefmt | — | FORMAT[/ENGINE] enable FORMAT, as built with ENGINE --disablefmt FORMAT[/ENGINE] disable FORMAT, as built with ENGINE If |\n| — | --listcfg | — | list (enabled and disabled) configurations, filtered to available formats --showhyphen FORMAT print name of hyphen file  |\n| — | --version | — | show version information and exit --help show this message and exit |\n\n## Section Outline\n\n- **NAME** (4 lines)\n- **SYNOPSIS** (5 lines)\n- **DESCRIPTION** (18 lines)\n- **OPTIONS** (14 lines) — 15 subsections\n  - --no-engine-subdir (2 lines)\n  - --no-error-if-no-format (7 lines)\n  - --no-strict (2 lines)\n  - --nohash (2 lines)\n  - --recorder (2 lines)\n  - --refresh (5 lines)\n  - --quiet (2 lines)\n  - --catcfg (2 lines)\n  - --dolinks (2 lines)\n  - --force (4 lines)\n  - Commands: (2 lines)\n  - --missing (11 lines)\n  - --enablefmt (7 lines)\n  - --listcfg (5 lines)\n  - --version (4 lines)\n- **ENVIRONMENT** (110 lines)\n- **REPORTING BUGS** (6 lines)\n\n## Full Content\n\n### NAME\n\nfmtutil - manage TeX formats and Metafont bases, per-user\nfmtutil-sys - manage TeX formats and Metafont bases, system-wide\nmktexfmt - create a TeX format or Metafont base\n\n### SYNOPSIS\n\nfmtutil [-user|-sys] [OPTION] ... [COMMAND]\nfmtutil-sys [OPTION] ... [COMMAND]\nfmtutil-user [OPTION] ... [COMMAND]\nmktexfmt FORMAT.fmt|BASE.base|FMTNAME\n\n### DESCRIPTION\n\nfmtutil version r59143 (2021-05-09 04:23:44 +0200)\n\nRebuild and manage TeX fmts and Metafont bases, collectively called \"formats\" here. (MetaPost\nno longer uses the past-equivalent \"mems\".)\n\nIf not operating in mktexfmt mode, exactly one  command  must  be  given,  filename  suffixes\nshould  generally not be specified, no non-option arguments are allowed, and multiple formats\ncan be generated.\n\nIf the command name ends in mktexfmt, only one format can be created.  The only options  sup‐\nported  are --help and --version, and the command line must be either a format name, with ex‐\ntension, or a plain name that is passed as the argument to --byfmt  (see  below).   The  full\nname  of  the generated file (if any) is written to stdout, and nothing else.  The system di‐\nrectories are used if they are writable, else the user directories.\n\nBy default, the return status is zero if all formats requested are successfully  built,  else\nnonzero.\n\n### OPTIONS\n\n--sys  use TEXMFSYS{VAR,CONFIG}\n\n--user use TEXMF{VAR,CONFIG}\n\n--cnffile FILE\nread  FILE  instead of fmtutil.cnf (can be given multiple times, in which case all the\nfiles are used)\n\n--dry-run, -n\ndon't actually build formts\n\n--fmtdir DIR\nwrite formats under DIR instead of TEXMF[SYS]VAR\n\n#### --no-engine-subdir\n\ndon't use engine-specific subdir of the fmtdir\n\n#### --no-error-if-no-format\n\nexit successfully if no format is selected\n\n--no-error-if-no-engine=ENGINE1,ENGINE2,...\nexit successfully even if a required ENGINE\n\nis missing, if it is included in the list.\n\n#### --no-strict\n\nexit successfully even if a format fails to build\n\n#### --nohash\n\ndon't update ls-R files\n\n#### --recorder\n\npass the -recorder option and save .fls files\n\n#### --refresh\n\nrecreate only existing format files\n\n--status-file FILE\nappend status information about built formats to FILE\n\n#### --quiet\n\nbe silent\n\n#### --catcfg\n\n(does nothing, exists for compatibility)\n\n#### --dolinks\n\n(does nothing, exists for compatibility)\n\n#### --force\n\n(does nothing, exists for compatibility)\n\n--test (does nothing, exists for compatibility)\n\n#### Commands:\n\n--all  recreate all format files\n\n#### --missing\n\ncreate all missing format files\n\n--byengine ENGINE\n(re)create formats built with ENGINE\n\n--byfmt FORMAT\n(re)create format FORMAT\n\n--byhyphen HYPHENFILE\n(re)create formats that depend on HYPHENFILE\n\n#### --enablefmt\n\nFORMAT[/ENGINE]  enable FORMAT, as built with ENGINE\n\n--disablefmt FORMAT[/ENGINE]\ndisable FORMAT, as built with ENGINE If multiple formats have the same name and\n\ndifferent engines, /ENGINE specifier is required.\n\n#### --listcfg\n\nlist (enabled and disabled) configurations, filtered to available formats\n\n--showhyphen FORMAT\nprint name of hyphen file for FORMAT\n\n#### --version\n\nshow version information and exit\n\n--help show this message and exit\n\n### ENVIRONMENT\n\nExplanation of trees and files normally used:\n\nIf --cnffile is specified on the command line (possibly multiple times), its  value(s)\nare  used.  Otherwise, fmtutil reads all the fmtutil.cnf files found by running \"kpse‐\nwhich -all fmtutil.cnf\", in the order returned  by  kpsewhich.   Files  specified  via\n--cnffile  are  first tried to be loaded directly, and if not found and the file names\ndon't contain directory parts, are searched via kpsewhich.\n\nIn any case, if multiple fmtutil.cnf files are found, all the format definitions found\nin all the fmtutil.cnf files are merged.\n\nThus, if fmtutil.cnf files are present in all trees, and the default layout is used as\nshipped with TeX Live, the following files are read, in the given order.\n\nFor fmtutil-sys:\nTEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/fmtutil.cnf\nTEXMFSYSVAR    $TEXLIVE/YYYY/texmf-var/web2c/fmtutil.cnf\nTEXMFLOCAL     $TEXLIVE/texmf-local/web2c/fmtutil.cnf\nTEXMFDIST      $TEXLIVE/YYYY/texmf-dist/web2c/fmtutil.cnf\n\nFor fmtutil-user:\nTEXMFCONFIG    $HOME/.texliveYYYY/texmf-config/web2c/fmtutil.cnf\nTEXMFVAR       $HOME/.texliveYYYY/texmf-var/web2c/fmtutil.cnf\nTEXMFHOME      $HOME/texmf/web2c/fmtutil.cnf\nTEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/fmtutil.cnf\nTEXMFSYSVAR    $TEXLIVE/YYYY/texmf-var/web2c/fmtutil.cnf\nTEXMFLOCAL     $TEXLIVE/texmf-local/web2c/fmtutil.cnf\nTEXMFDIST      $TEXLIVE/YYYY/texmf-dist/web2c/fmtutil.cnf\n\n(where YYYY is the TeX Live release version).\n\nAccording to the actions, fmtutil might update one of the existing cnf files or create\na new fmtutil.cnf, as described below.\n\nWhere format files are written:\n\nBy  default,  format  files are (re)written in $TEXMFSYSVAR/ENGINE by fmtutil-sys, and\n$TEXMFVAR/ENGINE by fmtutil-user, where /ENGINE is a subdirectory named for the engine\nused, such as \"pdftex\".\n\nFor mktexfmt, TEXMFSYSVAR is used if it is writable, else TEXMFVAR.\n\nIf the --fmtdir=DIR option is specified, DIR is used instead of TEXMF[SYS]VAR, but the\n/ENGINE subdir is still used by default.\n\nIn all cases, if the --no-engine-subdir option is specified,  the  /ENGINE  subdir  is\nomitted.\n\nWhere configuration changes are saved:\n\nIf  config  files are given on the command line, then the first one given will be used\nto save any changes from --enable or --disable.\n\nIf the config files are taken from kpsewhich output, then the algorithm is  more  com‐\nplicated:\n\n1)  If  $TEXMFCONFIG/web2c/fmtutil.cnf  or $TEXMFHOME/web2c/fmtutil.cnf appears in the\nlist of used files, then the one listed first by kpsewhich  --all  (equivalently,  the\none returned by \"kpsewhich fmtutil.cnf\"), is used.\n\n2)  If neither of the above two are present and changes are made, a new config file is\ncreated in $TEXMFCONFIG/web2c/fmtutil.cnf.\n\nIn general, the idea is that if a given config file is not  writable,  a  higher-level\none  can be used.  That way, the distribution's settings can be overridden system-wide\nusing TEXMFLOCAL, and system settings can be overridden again in a  particular  user's\nTEXMFHOME or TEXMFCONF.\n\nResolving multiple definitions of a format:\n\nIf  a  format is defined in more than one config file, then the definition coming from\nthe first-listed fmtutil.cnf is used.\n\nDisabling formats:\n\nfmtutil.cnf files with higher priority (listed earlier) can disable formats  in  lower\npriority  (listed  later)  fmtutil.cnf  files  by  writing  a  line  like  this in the\nhigher-priority fmtutil.cnf file:\n\n#! <fmtname> <enginename> <hyphen> <args>\n\nThe #! must be at the beginning of the line, with at least one space or tab afterward,\nand there must be whitespace between each word on the list.\n\nFor  example,  you  can disable the luajitlatex format by creating the file $TEXMFCON‐\nFIG/web2c/fmtutil.cnf with the line\n\n#! luajitlatex luajittex language.dat,language.dat.lua lualatex.ini\n\n(As  it  happens,  the  luajittex-related  formats  are  precisely  why  the  --no-er‐‐\nror-if-no-engine  option  exists, since luajittex cannot be compiled on all platforms.\nSo this is not needed.)\n\nfmtutil-user (fmtutil -user) vs. fmtutil-sys (fmtutil -sys):\n\nWhen fmtutil-sys is run or the command line option -sys is  used,  TEXMFSYSCONFIG  and\nTEXMFSYSVAR  are  used  instead of TEXMFCONFIG and TEXMFVAR, respectively. This is the\nprimary difference between fmtutil-sys and fmtutil-user.\n\nSee https://tug.org/texlive/scripts-sys-user.html for details.\n\nOther locations may be used if you give them on the command line, or these trees don't\nexist, or you are not using the original TeX Live.\n\nSupporting development binaries:\n\nIf  an  engine  name ends with \"-dev\", formats are created in the respective directory\nwith the -dev stripped.  This allows for easily running development binaries in paral‐\nlel with the released binaries.\n\n### REPORTING BUGS\n\nReport bugs to: tex-live@tug.org\nTeX Live home page: <https://tug.org/texlive/>\n\n\n\nTeX Live                                      May 2021                                    FMTUTIL(1)\n\n"
        }
    ],
    "structuredContent": {
        "command": "fmtutil-user",
        "section": "1",
        "mode": "man",
        "summary": "fmtutil - manage TeX formats and Metafont bases, per-user fmtutil-sys - manage TeX formats and Metafont bases, system-wide mktexfmt - create a TeX format or Metafont base",
        "synopsis": "fmtutil [-user|-sys] [OPTION] ... [COMMAND]\nfmtutil-sys [OPTION] ... [COMMAND]\nfmtutil-user [OPTION] ... [COMMAND]\nmktexfmt FORMAT.fmt|BASE.base|FMTNAME",
        "flags": [
            {
                "flag": "",
                "long": "--no-engine-subdir",
                "arg": null,
                "description": "don't use engine-specific subdir of the fmtdir"
            },
            {
                "flag": "",
                "long": "--no-error-if-no-format",
                "arg": null,
                "description": "exit successfully if no format is selected --no-error-if-no-engine=ENGINE1,ENGINE2,... exit successfully even if a required ENGINE is missing, if it is included in the list."
            },
            {
                "flag": "",
                "long": "--no-strict",
                "arg": null,
                "description": "exit successfully even if a format fails to build"
            },
            {
                "flag": "",
                "long": "--nohash",
                "arg": null,
                "description": "don't update ls-R files"
            },
            {
                "flag": "",
                "long": "--recorder",
                "arg": null,
                "description": "pass the -recorder option and save .fls files"
            },
            {
                "flag": "",
                "long": "--refresh",
                "arg": null,
                "description": "recreate only existing format files --status-file FILE append status information about built formats to FILE"
            },
            {
                "flag": "",
                "long": "--quiet",
                "arg": null,
                "description": "be silent"
            },
            {
                "flag": "",
                "long": "--catcfg",
                "arg": null,
                "description": "(does nothing, exists for compatibility)"
            },
            {
                "flag": "",
                "long": "--dolinks",
                "arg": null,
                "description": "(does nothing, exists for compatibility)"
            },
            {
                "flag": "",
                "long": "--force",
                "arg": null,
                "description": "(does nothing, exists for compatibility) --test (does nothing, exists for compatibility)"
            },
            {
                "flag": "",
                "long": "--missing",
                "arg": null,
                "description": "create all missing format files --byengine ENGINE (re)create formats built with ENGINE --byfmt FORMAT (re)create format FORMAT --byhyphen HYPHENFILE (re)create formats that depend on HYPHENFILE"
            },
            {
                "flag": "",
                "long": "--enablefmt",
                "arg": null,
                "description": "FORMAT[/ENGINE] enable FORMAT, as built with ENGINE --disablefmt FORMAT[/ENGINE] disable FORMAT, as built with ENGINE If multiple formats have the same name and different engines, /ENGINE specifier is required."
            },
            {
                "flag": "",
                "long": "--listcfg",
                "arg": null,
                "description": "list (enabled and disabled) configurations, filtered to available formats --showhyphen FORMAT print name of hyphen file for FORMAT"
            },
            {
                "flag": "",
                "long": "--version",
                "arg": null,
                "description": "show version information and exit --help show this message and exit"
            }
        ],
        "examples": [],
        "see_also": [],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 4,
                "subsections": []
            },
            {
                "name": "SYNOPSIS",
                "lines": 5,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 18,
                "subsections": []
            },
            {
                "name": "OPTIONS",
                "lines": 14,
                "subsections": [
                    {
                        "name": "--no-engine-subdir",
                        "lines": 2,
                        "long": "--no-engine-subdir"
                    },
                    {
                        "name": "--no-error-if-no-format",
                        "lines": 7,
                        "long": "--no-error-if-no-format"
                    },
                    {
                        "name": "--no-strict",
                        "lines": 2,
                        "long": "--no-strict"
                    },
                    {
                        "name": "--nohash",
                        "lines": 2,
                        "long": "--nohash"
                    },
                    {
                        "name": "--recorder",
                        "lines": 2,
                        "long": "--recorder"
                    },
                    {
                        "name": "--refresh",
                        "lines": 5,
                        "long": "--refresh"
                    },
                    {
                        "name": "--quiet",
                        "lines": 2,
                        "long": "--quiet"
                    },
                    {
                        "name": "--catcfg",
                        "lines": 2,
                        "long": "--catcfg"
                    },
                    {
                        "name": "--dolinks",
                        "lines": 2,
                        "long": "--dolinks"
                    },
                    {
                        "name": "--force",
                        "lines": 4,
                        "long": "--force"
                    },
                    {
                        "name": "Commands:",
                        "lines": 2
                    },
                    {
                        "name": "--missing",
                        "lines": 11,
                        "long": "--missing"
                    },
                    {
                        "name": "--enablefmt",
                        "lines": 7,
                        "long": "--enablefmt"
                    },
                    {
                        "name": "--listcfg",
                        "lines": 5,
                        "long": "--listcfg"
                    },
                    {
                        "name": "--version",
                        "lines": 4,
                        "long": "--version"
                    }
                ]
            },
            {
                "name": "ENVIRONMENT",
                "lines": 110,
                "subsections": []
            },
            {
                "name": "REPORTING BUGS",
                "lines": 6,
                "subsections": []
            }
        ]
    }
}