1FMTUTIL(1)                       User Commands                      FMTUTIL(1)
2
3
4

NAME

6       fmtutil - manage TeX formats and Metafont bases, per-user
7       fmtutil-sys - manage TeX formats and Metafont bases, system-wide
8       mktexfmt - create a TeX format or Metafont base
9

SYNOPSIS

11       fmtutil [-user|-sys] [OPTION] ... [COMMAND]
12       fmtutil-sys [OPTION] ... [COMMAND]
13       fmtutil-user [OPTION] ... [COMMAND]
14       mktexfmt FORMAT.fmt|BASE.base|FMTNAME
15

DESCRIPTION

17       fmtutil version r60154 (2021-08-03 23:55:56 +0200)
18
19       Rebuild  and  manage  TeX  fmts and Metafont bases, collectively called
20       "formats" here. (MetaPost no longer uses the past-equivalent "mems".)
21
22       If not operating in mktexfmt mode, exactly one command must  be  given,
23       filename  suffixes should generally not be specified, no non-option ar‐
24       guments are allowed, and multiple formats can be generated.
25
26       If the command name ends in mktexfmt, only one format can  be  created.
27       The  only  options  supported are --help and --version, and the command
28       line must be either a format name, with extension, or a plain name that
29       is passed as the argument to --byfmt (see below).  The full name of the
30       generated file (if any) is written to stdout, and  nothing  else.   The
31       system  directories are used if they are writable, else the user direc‐
32       tories.
33
34       By default, the return status is zero if all formats requested are suc‐
35       cessfully built, else nonzero.
36

OPTIONS

38       --sys  use TEXMFSYS{VAR,CONFIG}
39
40       --user use TEXMF{VAR,CONFIG}
41
42       --cnffile FILE
43              read  FILE  instead of fmtutil.cnf (can be given multiple times,
44              in which case all the files are used)
45
46       --dry-run, -n
47              don't actually build formts
48
49       --fmtdir DIR
50              write formats under DIR instead of TEXMF[SYS]VAR
51
52       --no-engine-subdir
53              don't use engine-specific subdir of the fmtdir
54
55       --no-error-if-no-format
56              exit successfully if no format is selected
57
58       --no-error-if-no-engine=ENGINE1,ENGINE2,...
59              exit successfully even if a required ENGINE
60
61              is missing, if it is included in the list.
62
63       --no-strict
64              exit successfully even if a format fails to build
65
66       --nohash
67              don't update ls-R files
68
69       --recorder
70              pass the -recorder option and save .fls files
71
72       --refresh
73              recreate only existing format files
74
75       --status-file FILE
76              append status information about built formats to FILE
77
78       --quiet
79              be silent
80
81       --catcfg
82              (does nothing, exists for compatibility)
83
84       --dolinks
85              (does nothing, exists for compatibility)
86
87       --force
88              (does nothing, exists for compatibility)
89
90       --test (does nothing, exists for compatibility)
91
92   Commands:
93       --all  recreate all format files
94
95       --missing
96              create all missing format files
97
98       --byengine ENGINE
99              (re)create formats built with ENGINE
100
101       --byfmt FORMAT
102              (re)create format FORMAT
103
104       --byhyphen HYPHENFILE
105              (re)create formats that depend on HYPHENFILE
106
107       --enablefmt
108              FORMAT[/ENGINE]  enable FORMAT, as built with ENGINE
109
110       --disablefmt FORMAT[/ENGINE]
111              disable FORMAT, as built with ENGINE If  multiple  formats  have
112              the same name and
113
114              different engines, /ENGINE specifier is required.
115
116       --listcfg
117              list  (enabled  and disabled) configurations, filtered to avail‐
118              able formats
119
120       --showhyphen FORMAT
121              print name of hyphen file for FORMAT
122
123       --version
124              show version information and exit
125
126       --help show this message and exit
127

ENVIRONMENT

129       Explanation of trees and files normally used:
130
131              If --cnffile is specified on the command line (possibly multiple
132              times), its value(s) are used.  Otherwise, fmtutil reads all the
133              fmtutil.cnf files found by running "kpsewhich -all fmtutil.cnf",
134              in  the order returned by kpsewhich.  Files specified via --cnf‐
135              file are first tried to be loaded directly, and if not found and
136              the  file  names don't contain directory parts, are searched via
137              kpsewhich.
138
139              In any case, if multiple fmtutil.cnf files are  found,  all  the
140              format  definitions  found  in  all  the  fmtutil.cnf  files are
141              merged.
142
143              Thus, if fmtutil.cnf files are present in all trees, and the de‐
144              fault  layout  is  used  as shipped with TeX Live, the following
145              files are read, in the given order.
146
147              For fmtutil-sys:
148              TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/fmtutil.cnf
149              TEXMFSYSVAR    $TEXLIVE/YYYY/texmf-var/web2c/fmtutil.cnf
150              TEXMFLOCAL     $TEXLIVE/texmf-local/web2c/fmtutil.cnf
151              TEXMFDIST      $TEXLIVE/YYYY/texmf-dist/web2c/fmtutil.cnf
152
153              For fmtutil-user:
154              TEXMFCONFIG    $HOME/.texliveYYYY/texmf-config/web2c/fmtutil.cnf
155              TEXMFVAR       $HOME/.texliveYYYY/texmf-var/web2c/fmtutil.cnf
156              TEXMFHOME      $HOME/texmf/web2c/fmtutil.cnf
157              TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/fmtutil.cnf
158              TEXMFSYSVAR    $TEXLIVE/YYYY/texmf-var/web2c/fmtutil.cnf
159              TEXMFLOCAL     $TEXLIVE/texmf-local/web2c/fmtutil.cnf
160              TEXMFDIST      $TEXLIVE/YYYY/texmf-dist/web2c/fmtutil.cnf
161
162              (where YYYY is the TeX Live release version).
163
164              According to the actions, fmtutil might update one of the exist‐
165              ing cnf files or create a new fmtutil.cnf, as described below.
166
167       Where format files are written:
168
169              By  default, format files are (re)written in $TEXMFSYSVAR/ENGINE
170              by fmtutil-sys, and $TEXMFVAR/ENGINE by fmtutil-user, where /EN‐
171              GINE  is a subdirectory named for the engine used, such as "pdf‐
172              tex".
173
174              For mktexfmt, TEXMFSYSVAR is used if it is writable, else TEXMF‐
175              VAR.
176
177              If  the --fmtdir=DIR option is specified, DIR is used instead of
178              TEXMF[SYS]VAR, but the /ENGINE subdir is still used by default.
179
180              In all cases, if the --no-engine-subdir option is specified, the
181              /ENGINE subdir is omitted.
182
183       Where configuration changes are saved:
184
185              If  config  files  are given on the command line, then the first
186              one given will be used to save  any  changes  from  --enable  or
187              --disable.
188
189              If  the  config  files are taken from kpsewhich output, then the
190              algorithm is more complicated:
191
192              1) If $TEXMFCONFIG/web2c/fmtutil.cnf  or  $TEXMFHOME/web2c/fmtu‐
193              til.cnf  appears  in the list of used files, then the one listed
194              first by kpsewhich --all  (equivalently,  the  one  returned  by
195              "kpsewhich fmtutil.cnf"), is used.
196
197              2) If neither of the above two are present and changes are made,
198              a new config file is created in $TEXMFCONFIG/web2c/fmtutil.cnf.
199
200              In general, the idea is that if  a  given  config  file  is  not
201              writable, a higher-level one can be used.  That way, the distri‐
202              bution's settings can be overridden system-wide  using  TEXMFLO‐
203              CAL, and system settings can be overridden again in a particular
204              user's TEXMFHOME or TEXMFCONF.
205
206       Resolving multiple definitions of a format:
207
208              If a format is defined in more than one config  file,  then  the
209              definition coming from the first-listed fmtutil.cnf is used.
210
211       Disabling formats:
212
213              fmtutil.cnf files with higher priority (listed earlier) can dis‐
214              able formats in lower priority (listed later) fmtutil.cnf  files
215              by  writing  a line like this in the higher-priority fmtutil.cnf
216              file:
217
218              #! <fmtname> <enginename> <hyphen> <args>
219
220              The #! must be at the beginning of the line, with at  least  one
221              space  or  tab  afterward,  and there must be whitespace between
222              each word on the list.
223
224              For example, you can disable the luajitlatex format by  creating
225              the file $TEXMFCONFIG/web2c/fmtutil.cnf with the line
226
227              #!  luajitlatex  luajittex  language.dat,language.dat.lua luala‐
228              tex.ini
229
230              (As it happens, the luajittex-related formats are precisely  why
231              the  --no-error-if-no-engine option exists, since luajittex can‐
232              not be compiled on all platforms. So this is not needed.)
233
234       fmtutil-user (fmtutil -user) vs. fmtutil-sys (fmtutil -sys):
235
236              When fmtutil-sys is run or the command line option -sys is used,
237              TEXMFSYSCONFIG  and  TEXMFSYSVAR are used instead of TEXMFCONFIG
238              and TEXMFVAR, respectively. This is the primary  difference  be‐
239              tween fmtutil-sys and fmtutil-user.
240
241              See https://tug.org/texlive/scripts-sys-user.html for details.
242
243              Other  locations  may  be  used  if you give them on the command
244              line, or these trees don't exist, or you are not using the orig‐
245              inal TeX Live.
246
247       Supporting development binaries:
248
249              If  an  engine name ends with "-dev", formats are created in the
250              respective directory with the -dev stripped.   This  allows  for
251              easily  running  development  binaries  in parallel with the re‐
252              leased binaries.
253

REPORTING BUGS

255       Report bugs to: tex-live@tug.org
256       TeX Live home page: <https://tug.org/texlive/>
257
258
259
260TeX Live                          March 2022                        FMTUTIL(1)
Impressum