Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
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

DESCRIPTION
     fmtutil version r71424 (2024-06-04 12:25:53 +0200)

     Rebuild  and  manage TeX fmts and Metafont bases, collectively called "for-
     mats" here. (MetaPost no longer uses the past-equivalent "mems".)

     If not operating in mktexfmt mode, exactly one command must be given, file-
     name suffixes should generally not be specified,  no  non-option  arguments
     are allowed, and multiple formats can be generated.

     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.  The system directories
     are used if they are writable, else the user directories.

     By default, the return status is zero if all formats requested are success-
     fully 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)

     --dry-run, -n
	    don't actually build formts

     --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

     --refresh
	    recreate only existing format files

     --status-file FILE
	    append status information about built formats to FILE

     --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 (exactly one must be specified):
     --all  recreate all format files

     --missing
	    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

     --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  available
	    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 fm-
	    tutil.cnf files found by running "kpsewhich  -all  fmtutil.cnf",  in
	    the  order returned by kpsewhich.  Files specified via --cnffile are
	    first tried to be loaded directly, and if not  found  and  the  file
	    names don't contain directory parts, are searched via 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 update one of  the	existing
	    cnf files or create a new fmtutil.cnf, as described below.

     Where format files are written:

	    By	default,  format files are (re)written in $TEXMFSYSVAR/ENGINE by
	    fmtutil-sys, and $TEXMFVAR/ENGINE by fmtutil-user, where /ENGINE  is
	    a subdirectory named for the engine used, such as "pdftex".

	    For mktexfmt, TEXMFSYSVAR is used if it is writable, else TEXMFVAR.

	    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 all cases, 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  algo-
	    rithm is more complicated:

	    1) If $TEXMFCONFIG/web2c/fmtutil.cnf or $TEXMFHOME/web2c/fmtutil.cnf
	    appears  in  the  list  of	used files, then the one listed first by
	    kpsewhich --all (equivalently, the one returned by "kpsewhich  fmtu-
	    til.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  distribution's  set-
	    tings  can	be  overridden	system-wide using TEXMFLOCAL, and system
	    settings can be overridden again in a particular user's TEXMFHOME or
	    TEXMFCONF.

     Resolving multiple definitions of a format:

	    If a format is defined in more than one config file, then the defin-
	    ition coming from the first-listed fmtutil.cnf is used.

     Disabling formats:

	    fmtutil.cnf files with higher priority (listed earlier) can  disable
	    formats  in lower priority (listed later) fmtutil.cnf files by writ-
	    ing a line like this in the higher-priority fmtutil.cnf file:

	    #! <fmtname> <enginename> <hyphen> <args>

	    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 lualatex.ini

	    (As it happens, the luajittex-related formats are precisely why  the
	    --no-error-if-no-engine  option  exists,  since  luajittex cannot be
	    compiled on all platforms. So this is not needed.)

     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 fmtu-
	    til-sys and fmtutil-user.

	    See https://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 original TeX Live.

     Supporting development binaries:

	    If an engine name ends with "-dev", formats are created in	the  re-
	    spective  directory  with the -dev stripped.  This allows for easily
	    running development binaries in parallel with the released binaries.

ENVIRONMENT
	    This script runs TeX and Metafont to generate the fmt/base file, and
	    thus all normal environment variables  and	search	path  rules  for
	    TeX/MF apply.

REPORTING BUGS
     Report bugs to: tex-live@tug.org
     TeX Live home page: <https://tug.org/texlive/>

TeX Live			  February 2025 		      FMTUTIL(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=mktexfmt&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help