1FMTUTIL(1) User Commands FMTUTIL(1)
2
3
4
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
11 fmtutil [-user|-sys] [OPTION] ... [COMMAND]
12 fmtutil-sys [OPTION] ... [COMMAND]
13 fmtutil-user [OPTION] ... [COMMAND]
14 mktexfmt FORMAT.fmt|BASE.base|FMTNAME
15
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
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
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
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)