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.EXT
15
17 fmtutil version r43794 (2017-04-15 02:12:54 +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 the command name ends in mktexfmt, only one format can be created.
23 The only options supported are --help and --version, and the command
24 line must be either a format name, with extension, or a plain name that
25 is passed as the argument to --byfmt (see below). The full name of the
26 generated file (if any) is written to stdout, and nothing else.
27
28 If not operating in mktexfmt mode, exactly one command must be given,
29 extensions should generally not be specified, no non-option arguments
30 are allowed, and multiple formats can be generated, as follows.
31
32 By default, the return status is zero if all formats requested are suc‐
33 cessfully built, else nonzero.
34
36 --sys use TEXMFSYS{VAR,CONFIG}
37
38 --user use TEXMF{VAR,CONFIG}
39
40 --cnffile FILE
41 read FILE instead of fmtutil.cnf (can be given multiple times,
42 in which case all the files are used)
43
44 --fmtdir DIR
45 write formats under DIR instead of TEXMF[SYS]VAR
46
47 --no-engine-subdir
48 don't use engine-specific subdir of the fmtdir
49
50 --no-error-if-no-format exit successfully if no format is selected
51
52 --no-error-if-no-engine=ENGINE1,ENGINE2,...
53 exit successfully even if a required engine
54
55 is missing, if it is included in the list.
56
57 --no-strict
58 exit successfully even if a format fails to build
59
60 --nohash
61 don't update ls-R files
62
63 --recorder
64 pass the -recorder option and save .fls files
65
66 --quiet
67 be silent
68
69 --catcfg
70 (does nothing, exists for compatibility)
71
72 --dolinks
73 (does nothing, exists for compatibility)
74
75 --force
76 (does nothing, exists for compatibility)
77
78 --test (does nothing, exists for compatibility)
79
80 Commands:
81 --all recreate all format files
82
83 --missing
84 create all missing format files
85
86 --refresh
87 recreate only existing format files
88
89 --byengine ENGINE
90 (re)create formats built with ENGINE
91
92 --byfmt FORMAT
93 (re)create format FORMAT
94
95 --byhyphen HYPHENFILE
96 (re)create formats that depend on HYPHENFILE
97
98 --enablefmt
99 FORMAT[/ENGINE] enable FORMAT, as built with ENGINE
100
101 --disablefmt FORMAT[/ENGINE] disable FORMAT, as built with ENGINE
102 If multiple formats have the same name and
103
104 different engines, /ENGINE specifier is required.
105
106 --listcfg
107 list (enabled and disabled) configurations, filtered to avail‐
108 able formats
109
110 --showhyphen FORMAT
111 print name of hyphen file for FORMAT
112
113 --version
114 show version information and exit
115
116 --help show this message and exit
117
119 Explanation of trees and files normally used:
120
121 If --cnffile is specified on the command line (possibly multiple
122 times), its value(s) are used. Otherwise, fmtutil reads all the
123 fmtutil.cnf files found by running `kpsewhich -all fmtutil.cnf',
124 in the order returned by kpsewhich.
125
126 In any case, if multiple fmtutil.cnf files are found, all the
127 format definitions found in all the fmtutil.cnf files are
128 merged.
129
130 Thus, if fmtutil.cnf files are present in all trees, and the
131 default layout is used as shipped with TeX Live, the following
132 files are read, in the given order.
133
134 For fmtutil-sys:
135 TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/fmtutil.cnf
136 TEXMFSYSVAR $TEXLIVE/YYYY/texmf-var/web2c/fmtutil.cnf
137 TEXMFLOCAL $TEXLIVE/texmf-local/web2c/fmtutil.cnf
138 TEXMFDIST $TEXLIVE/YYYY/texmf-dist/web2c/fmtutil.cnf
139
140 For fmtutil-user:
141 TEXMFCONFIG $HOME/.texliveYYYY/texmf-config/web2c/fmtutil.cnf
142 TEXMFVAR $HOME/.texliveYYYY/texmf-var/web2c/fmtutil.cnf
143 TEXMFHOME $HOME/texmf/web2c/fmtutil.cnf
144 TEXMFSYSCONFIG $TEXLIVE/YYYY/texmf-config/web2c/fmtutil.cnf
145 TEXMFSYSVAR $TEXLIVE/YYYY/texmf-var/web2c/fmtutil.cnf
146 TEXMFLOCAL $TEXLIVE/texmf-local/web2c/fmtutil.cnf
147 TEXMFDIST $TEXLIVE/YYYY/texmf-dist/web2c/fmtutil.cnf
148
149 (where YYYY is the TeX Live release version).
150
151 According to the actions, fmtutil might write to one of the
152 given files or create a new fmtutil.cnf, described further
153 below.
154
155 Where formats are written:
156
157 By default, format files are (re)written in TEXMFSYSVAR/ENGINE
158 by fmtutil-sys, and TEXMFVAR/ENGINE by fmtutil, where /ENGINE is
159 a subdirectory named for the engine used, such as "pdftex".
160
161 If the --fmtdir=DIR option is specified, DIR is used instead of
162 TEXMF[SYS]VAR, but the /ENGINE subdir is still used by default.
163
164 In any case, if the --no-engine-subdir option is specified, the
165 /ENGINE subdir is omitted.
166
167 Where configuration changes are saved:
168
169 If config files are given on the command line, then the first
170 one given will be used to save any changes from --enable or
171 --disable. If the config files are taken from kpsewhich output,
172 then the algorithm is more complex:
173
174 1) If $TEXMFCONFIG/web2c/fmtutil.cnf or $TEXMFHOME/web2c/fmtu‐
175 til.cnf appears in the list of used files, then the one listed
176 first by kpsewhich --all (equivalently, the one returned by
177 kpsewhich fmtutil.cnf), is used.
178
179 2) If neither of the above two are present and changes are made,
180 a new config file is created in $TEXMFCONFIG/web2c/fmtutil.cnf.
181
182 In general, the idea is that if a given config file is not
183 writable, a higher-level one can be used. That way, the distri‐
184 bution's settings can be overridden system-wide using TEXMFLO‐
185 CAL, and system settings can be overridden again in a particular
186 user's TEXMFHOME.
187
188 Resolving multiple definitions of a format:
189
190 If a format is defined in more than one config file, then the
191 definition coming from the first-listed fmtutil.cnf is used.
192
193 Disabling formats:
194
195 fmtutil.cnf files with higher priority (listed earlier) can dis‐
196 able formats in lower priority (listed later) fmtutil.cnf files
197 by writing a line like
198
199 #! <fmtname> <enginename> <hyphen> <args>
200
201 in the higher-priority fmtutil.cnf file.
202 The #! must be at the
203
204 beginning of the line, with at least one space or tab afterward,
205 and there must be whitespace between each word on the list.
206
207 For example, you can disable the luajitlatex format by creating
208 the file $TEXMFCONFIG/web2c/fmtutil.cnf with the line
209
210 #! luajitlatex luajittex language.dat,language.dat.lua luala‐
211 tex.ini
212
213 (As it happens, the luajittex-related formats are precisely why
214 the --no-error-if-no-engine option exists, since luajittex can‐
215 not be compiled on all platforms.)
216
217 fmtutil-user (fmtutil -user) vs. fmtutil-sys (fmtutil -sys):
218
219 When fmtutil-sys is run or the command line option -sys is used,
220 TEXMFSYSCONFIG and TEXMFSYSVAR are used instead of TEXMFCONFIG
221 and TEXMFVAR, respectively. This is the primary difference
222 between fmtutil-sys and fmtutil-user.
223
224 See http://tug.org/texlive/scripts-sys-user.html for details.
225
226 Other locations may be used if you give them on the command
227 line, or these trees don't exist, or you are not using the orig‐
228 inal TeX Live.
229
230 Supporting development binaries
231
232 If an engine name ends with "-dev", formats are created in the
233 respective directory with the -dev stripped. This allows for
234 easily running development binaries in parallel with the
235 released binaries.
236
238 Report bugs to: tex-live@tug.org
239 TeX Live home page: <http://tug.org/texlive/>
240
241
242
243TeX Live May 2017 FMTUTIL(1)