man : mktex
File: kpathsea.info, Node: mktex scripts, Next: Installation testing, Prev: Filename database generation, Up: Custom installation
2.2.9 `mktex' scripts
If Kpathsea cannot otherwise find a file, for some file types it is
configured by default to invoke an external program to create it
dynamically (*note mktex configuration::). These are collectively
known as "`mktex' scripts", since most of them are named `mktex...'.
For example, this is useful for fonts (bitmaps, TFM's, and
arbitrarily-sizable Metafont sources such as the Sauter and EC fonts),
since any given document can use fonts never before referenced.
Building all fonts in advance is therefore impractical, if not
It is also useful for the TeX `.fmt' (and Metafont `.base' and
Metapost `.mem' files, *note Memory dumps: (Web2c)Memory dumps.), where
pre-generating every format consumes a lot of both time and space.
The script is passed the name of the file to create and possibly
other arguments, as explained below. It must echo the full pathname of
the file it created (and nothing else) to standard output; it can write
diagnostics to standard error.
* config: mktex configuration.
* names: mktex script names.
* args: mktex script arguments.
File: kpathsea.info, Node: mktex configuration, Next: mktex script names, Up: mktex scripts
220.127.116.11 `mktex' configuration
The list of file types and program names that can run an external
program to create missing files is listed in the next section. In the
absence of `configure' options specifying otherwise, everything but
`mktextex' will be enabled by default. The `configure' options to
change the defaults are:
The `configure' setting is overridden if the environment variable or
configuration file value named for the script is set; e.g., `MKTEXPK'
(*note mktex script arguments::).
`mktexfmt' reads a file `fmtutil.cnf', typically located in
`texmf/web2c/' to glean its configuration information. The rest of the
files and features in this section are primarily intended for the font
As distributed, all the scripts source a file
`texmf/web2c/mktex.cnf' if it exists, so you can override various
defaults. See `mktex.opt', for instance, which defines the default
mode, resolution, some special directory names, etc. If you prefer not
to change the distributed scripts, you can simply create `mktex.cnf'
with the appropriate definitions (you do not need to create it if you
have nothing to put in it). `mktex.cnf' has no special syntax; it's an
arbitrary Bourne shell script. The distribution contains a sample
`mktex.cnf' for you to copy and modify as you please (it is not
In addition, you can configure a number of features with the
`MT_FEATURES' variable, which you can define:
* in `mktex.opt', as just mentioned;
* by editing the file `mktex.opt', either before `make install' (in
the source hierarchy) or after (in the installed hierarchy);
* or in the environment.
If none of the options below are enabled, `mktexpk', `mktextfm', and
`mktexmf' follow the following procedure to decide where fonts should
be installed. Find the tree where the font's sources are, and test the
permissions of the `fonts' directory of that tree to determine whether
it is writable. If it is, put the files in the tree in appropriate
locations. If it isn't writable, see whether the tree is a system tree
(named in `SYSTEXMF'). If so, the `VARTEXFONTS' tree is used. In all
other cases the working directory is used.
The `appendonlydir' option is enabled by default.
Tell `mktexdir' to create directories append-only, i.e., set their
sticky bit (*note Mode Structure: (coreutils)Mode Structure.).
This feature is silently ignored on non-Unix platforms (e.g.
Windows/NT and MS-DOS) which don't support similar functionality.
This feature is enabled by default.
Use 8.3 names; e.g., `dpi600/cmr10.pk' instead of `cmr10.600pk'.
Note that this feature only affects filenames that would otherwise
clash with other TeX-related filenames; `mktex' scripts do nothing
about filenames which exceed the 8+3 MS-DOS limits but remain
unique when truncated (by the OS) to these limits, and nether do
the scripts care about possible clashes with files which aren't
related with TeX. For example, `cmr10.600pk' would clash with
`cmr10.600gf' and is therefore changed when `dosnames' is in
effect, but `mf.pool' and `mp.base' don't clash with any
TeX-related files and are therefore unchanged.
This feature is turned on by default on MS-DOS. If you do not wish
`dosnames' to be set on an MS-DOS platform, you need to set the
`MT_FEATURES' environment variable to a value that doesn't include
`dosnames'. You can also change the default setting by editing
`mktex.opt', but only if you use the `mktex' shell scripts; the
emulation programs don't consult `mktex.opt'.
Instead of deriving the location of a font in the destination tree
from the location of the sources, the aliases and directory names
from the Fontname distribution are used. (*note Introduction:
Let mktexpk and mktextfm create metafont driver files in a
temporary directory. These will be used for just one metafont run
and not installed permanently.
Omit the directory level for the mode name; this is fine as long as
you generate fonts for only one mode.
Omit the font supplier name directory level.
Omit the font typeface name directory level.
Omit the font supplier and typeface name directory levels. This
feature is deprecated in favour of `stripsupplier' and
When this option is enabled, fonts that would otherwise be written
in system texmf tree go to the `VARTEXFONTS' tree instead. The
default value in `kpathsea/Makefile.in' is `/var/tmp/texfonts'.
The `Linux File System Standard' recommends `/var/tex/fonts'.
The `varfonts' setting in `MT_FEATURES' is overridden by the
`USE_VARTEXFONTS' environment variable: if set to `1', the feature
is enabled, and if set to `0', the feature is disabled.
Force generated files that would go into a system tree (as defined
by `SYSTEXMF') into `TEXMFVAR'. Starting with teTeX-3.0, the
variable `TEXMFVAR' is always set. The `varfonts' feature takes
precedence if also set.
The `texmfvar' setting in `MT_FEATURES' is overridden by the
`USE_TEXMFVAR' environment variable: if set to `1', the feature is
enabled, and if set to `0', the feature is disabled.
File: kpathsea.info, Node: mktex script names, Next: mktex script arguments, Prev: mktex configuration, Up: mktex scripts
18.104.22.168 `mktex' script names
The following table shows the default name of the script for each of
the file types which support runtime generation.
(`.fmt', `.base', `.mem') TeX/Metafont/MetaPost formats. This
script is also named `fmtutil', and reads `fmtutil.cnf' for
(`.mf') Metafont input files.
(`.ocp') Omega compiled process files.
(`.ofm') Omega font metric files.
(`pk') Glyph fonts.
(`.tex') TeX input files (disabled by default).
(`.tfm') TFM files.
These names can be overridden by an environment variable specific to
the program--for example, `DVIPSMAKEPK' for Dvipsk.
If a `mktex...' script fails, the invocation is appended to a file
`missfont.log' (by default) in the current directory. You can then
execute the log file to create the missing files after fixing the
If the current directory is not writable and the environment
variable or configuration file value `TEXMFOUTPUT' is set, its value is
used. Otherwise, nothing is written. The name `missfont.log' is
overridden by the `MISSFONT_LOG' environment variable or configuration
File: kpathsea.info, Node: mktex script arguments, Prev: mktex script names, Up: mktex scripts
22.214.171.124 `mktex' script arguments
The first argument to a `mktex' script is always the name of the file
to be created.
In the default `mktexpk' implementation, additional arguments may
also be passed:
Sets the resolution of the generated font to NUM.
Sets the Metafont mode to NAME.
Sets the the "base dpi" for the font. This must match the mode
A "magstep" string suitable for the Metafont `mag' variable. This
must match the combination of BDPI and DPI being used.
A directory name. If the directory is absolute, it is used as-is.
Otherwise, it is appended to the root destination directory set in