FMTUTIL(1) User Commands FMTUTIL(1)NAME
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]
fmtutil-sys [OPTION] ... [COMMAND]
fmtutil-user [OPTION] ... [COMMAND]
mktexfmt FORMAT.fmt|BASE.base|FMTNAME.EXT
DESCRIPTION
fmtutil version r43794 (2017-04-15 02:12:54 +0200)
Rebuild and manage TeX fmts and Metafont bases, collectively called
"formats" here. (MetaPost no longer uses the past-equivalent "mems".)
If the command name ends in mktexfmt, only one format can be created.
The only options supported are --help and --version, and the command
line must be either a format name, with extension, or a plain name that
is passed as the argument to --byfmt (see below). The full name of the
generated file (if any) is written to stdout, and nothing else.
If not operating in mktexfmt mode, exactly one command must be given,
extensions should generally not be specified, no non-option arguments
are allowed, and multiple formats can be generated, as follows.
By default, the return status is zero if all formats requested are suc‐
cessfully built, else nonzero.
OPTIONS--sys use TEXMFSYS{VAR,CONFIG}
--user use TEXMF{VAR,CONFIG}
--cnffile FILE
read FILE instead of fmtutil.cnf (can be given multiple times,
in which case all the files are used)
--fmtdir DIR
write formats under DIR instead of TEXMF[SYS]VAR
--no-engine-subdir
don't use engine-specific subdir of the fmtdir
--no-error-if-no-format 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.
--no-strict
exit successfully even if a format fails to build
--nohash
don't update ls-R files
--recorder
pass the -recorder option and save .fls files
--quiet
be silent
--catcfg
(does nothing, exists for compatibility)
--dolinks
(does nothing, exists for compatibility)
--force
(does nothing, exists for compatibility)
--test (does nothing, exists for compatibility)
Commands:
--all recreate all format files
--missing
create all missing format files
--refresh
recreate only existing 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
--enablefmt
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.
--listcfg
list (enabled and disabled) configurations, filtered to avail‐
able formats
--showhyphen FORMAT
print name of hyphen file for FORMAT
--version
show version information and exit
--help show this message and exit
ENVIRONMENT
Explanation of trees and files normally used:
If --cnffile is specified on the command line (possibly multiple
times), its value(s) are used. Otherwise, fmtutil reads all the
fmtutil.cnf files found by running `kpsewhich -all fmtutil.cnf',
in the order returned by kpsewhich.
In any case, if multiple fmtutil.cnf files are found, all the
format definitions found in all the fmtutil.cnf files are
merged.
Thus, if fmtutil.cnf files are present in all trees, and the
default layout is used as shipped with TeX Live, the following
files are read, in the given order.
For fmtutil-sys:
TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/fmtutil.cnf
TEXMFSYSVAR $TEXLIVE/YYYY/texmf-var/web2c/fmtutil.cnf
TEXMFLOCAL $TEXLIVE/texmf-local/web2c/fmtutil.cnf
TEXMFDIST $TEXLIVE/YYYY/texmf-dist/web2c/fmtutil.cnf
For fmtutil-user:
TEXMFCONFIG $HOME/.texliveYYYY/texmf-config/web2c/fmtutil.cnf
TEXMFVAR $HOME/.texliveYYYY/texmf-var/web2c/fmtutil.cnf
TEXMFHOME $HOME/texmf/web2c/fmtutil.cnf
TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/fmtutil.cnf
TEXMFSYSVAR $TEXLIVE/YYYY/texmf-var/web2c/fmtutil.cnf
TEXMFLOCAL $TEXLIVE/texmf-local/web2c/fmtutil.cnf
TEXMFDIST $TEXLIVE/YYYY/texmf-dist/web2c/fmtutil.cnf
(where YYYY is the TeX Live release version).
According to the actions, fmtutil might write to one of the
given files or create a new fmtutil.cnf, described further
below.
Where formats are written:
By default, format files are (re)written in TEXMFSYSVAR/ENGINE
by fmtutil-sys, and TEXMFVAR/ENGINE by fmtutil, where /ENGINE is
a subdirectory named for the engine used, such as "pdftex".
If the --fmtdir=DIR option is specified, DIR is used instead of
TEXMF[SYS]VAR, but the /ENGINE subdir is still used by default.
In any case, if the --no-engine-subdir option is specified, the
/ENGINE subdir is omitted.
Where configuration changes are saved:
If config files are given on the command line, then the first
one given will be used to save any changes from --enable or
--disable. If the config files are taken from kpsewhich output,
then the algorithm is more complex:
1) If $TEXMFCONFIG/web2c/fmtutil.cnf or $TEXMFHOME/web2c/fmtu‐
til.cnf appears in the list of used files, then the one listed
first by kpsewhich --all (equivalently, the one returned by
kpsewhich fmtutil.cnf), is used.
2) If neither of the above two are present and changes are made,
a new config file is created in $TEXMFCONFIG/web2c/fmtutil.cnf.
In general, the idea is that if a given config file is not
writable, a higher-level one can be used. That way, the distri‐
bution's settings can be overridden system-wide using TEXMFLO‐
CAL, and system settings can be overridden again in a particular
user's TEXMFHOME.
Resolving multiple definitions of a format:
If a format is defined in more than one config file, then the
definition coming from the first-listed fmtutil.cnf is used.
Disabling formats:
fmtutil.cnf files with higher priority (listed earlier) can dis‐
able formats in lower priority (listed later) fmtutil.cnf files
by writing a line like
#! <fmtname> <enginename> <hyphen> <args>
in the higher-priority fmtutil.cnf file.
The #! must be at the
beginning of the line, with at least one space or tab afterward,
and there must be whitespace between each word on the list.
For example, you can disable the luajitlatex format by creating
the file $TEXMFCONFIG/web2c/fmtutil.cnf with the line
#! luajitlatex luajittex language.dat,language.dat.lua luala‐
tex.ini
(As it happens, the luajittex-related formats are precisely why
the --no-error-if-no-engine option exists, since luajittex can‐
not be compiled on all platforms.)
fmtutil-user (fmtutil -user) vs. fmtutil-sys (fmtutil -sys):
When fmtutil-sys is run or the command line option -sys is used,
TEXMFSYSCONFIG and TEXMFSYSVAR are used instead of TEXMFCONFIG
and TEXMFVAR, respectively. This is the primary difference
between fmtutil-sys and fmtutil-user.
See http://tug.org/texlive/scripts-sys-user.html for details.
Other locations may be used if you give them on the command
line, or these trees don't exist, or you are not using the orig‐
inal TeX Live.
Supporting development binaries
If an engine name ends with "-dev", formats are created in the
respective directory with the -dev stripped. This allows for
easily running development binaries in parallel with the
released binaries.
REPORTING BUGS
Report bugs to: tex-live@tug.org
TeX Live home page: <http://tug.org/texlive/>
TeX Live May 2017 FMTUTIL(1)