summaryrefslogtreecommitdiff
path: root/Build/source/texk/kpathsea/doc/kpathsea.info
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/kpathsea/doc/kpathsea.info')
-rw-r--r--Build/source/texk/kpathsea/doc/kpathsea.info4017
1 files changed, 0 insertions, 4017 deletions
diff --git a/Build/source/texk/kpathsea/doc/kpathsea.info b/Build/source/texk/kpathsea/doc/kpathsea.info
deleted file mode 100644
index 66b0a4e2f90..00000000000
--- a/Build/source/texk/kpathsea/doc/kpathsea.info
+++ /dev/null
@@ -1,4017 +0,0 @@
-This is kpathsea.info, produced by makeinfo version 5.1 from
-kpathsea.texi.
-
-This file documents the Kpathsea library for path searching.
-
- Copyright (C) 1996-2021 Karl Berry & Olaf Weber.
-
- Permission is granted to make and distribute verbatim copies of this
-manual provided the copyright notice and this permission notice are
-preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
-this manual under the conditions for verbatim copying, provided that the
-entire resulting derived work is distributed under the terms of a
-permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
-manual into another language, under the above conditions for modified
-versions, except that this permission notice may be stated in a
-translation approved by the TeX Users Group.
-INFO-DIR-SECTION TeX
-START-INFO-DIR-ENTRY
-* Kpathsea: (kpathsea). File lookup along search paths.
-* kpsewhich: (kpathsea)Invoking kpsewhich. TeX file searching.
-* mktexfmt: (kpathsea)mktex scripts. Format (fmt/base/mem) generation.
-* mktexlsr: (kpathsea)Filename database. Update ls-R.
-* mktexmf: (kpathsea)mktex scripts. MF source generation.
-* mktexpk: (kpathsea)mktex scripts. PK bitmap generation.
-* mktextex: (kpathsea)mktex scripts. TeX source generation.
-* mktextfm: (kpathsea)mktex scripts. TeX font metric generation.
-END-INFO-DIR-ENTRY
-
-
-File: kpathsea.info, Node: Top, Next: Introduction, Up: (dir)
-
-Kpathsea library
-****************
-
-This manual documents the Kpathsea library for path searching. It
-corresponds to version 6.3.3, released in February 2021.
-
-* Menu:
-
-* Introduction:: Overview and history.
-
-* unixtex.ftp:: Obtaining TeX software.
-* Security:: Who can write what files, etc.
-* TeX directory structure:: Managing the horde of TeX input files.
-
-* Path searching:: How filename lookups work.
-* TeX support:: Special support for TeX-related file lookups.
-
-* Programming:: How to use Kpathsea features in your program.
-
-* Reporting bugs:: Where and how to report bugs.
-* Index:: General index.
-
-
-File: kpathsea.info, Node: Introduction, Next: unixtex.ftp, Prev: Top, Up: Top
-
-1 Introduction
-**************
-
-This manual corresponds to version 6.3.3 of the Kpathsea library,
-released in February 2021.
-
- The library's fundamental purpose is to return a filename from a list
-of directories specified by the user, similar to what shells do when
-looking up program names to execute.
-
- The following software, all of which is maintained in parallel, uses
-this library:
-
- * Dviljk (see the 'dvilj' man page)
- * Dvipsk (*note (dvips)::)
- * GNU font utilities (*note (fontu)::)
- * Web2c (*note (web2c)::)
- * Xdvik (see the 'xdvi' man page)
-
-Other software that we do not maintain also uses it.
-
- Kpathsea is now maintained as part of the TeX Live distribution
-(<https://tug.org/texlive>), which includes several more Kpathsea-using
-programs. For information on configuration, building, installing, and
-more, *note (tlbuild)::.
-
- The library is still actively maintained. If you have comments or
-suggestions, please send along (*note Reporting bugs::).
-
- The Kpathsea library is distributed under the GNU Library General
-Public License (LGPL), version 2.1 or (at your option) any later
-version. In short, this means if you write a program using the library,
-you must (offer to) distribute the source to the library, along with any
-changes you have made, and allow anyone to modify the library source and
-distribute their modifications. It does not mean you have to distribute
-the source to your program using the library, although we hope you will.
-See accompanying files for the text of the GNU licenses, or
-<https://gnu.org/licenses>.
-
- If you know enough about TeX to be reading this manual, then you (or
-your institution) should consider joining the TeX Users Group (if you're
-already a member, thanks!). TUG produces the periodical 'TUGboat',
-sponsors an annual meeting and publishes the proceedings, and arranges
-courses on TeX for all levels of users throughout the world. See
-<https://tug.org> for information.
-
-* Menu:
-
-* History::
-
-
-File: kpathsea.info, Node: History, Up: Introduction
-
-1.1 History
-===========
-
-This section is for those people who are curious about how the library
-came about. If you like to read historical accounts of software, we
-urge you to seek out the GNU Autoconf manual and the "Errors of TeX"
-paper by Don Knuth, published in his book 'Digital Typography', among
-other places.
-
- [Karl writes.] My first ChangeLog entry for Web2c seems to be
-February 1990, but I may have done some work before then. In any case,
-Tim Morgan and I were jointly maintaining it for a time. (I should
-mention here that Tim had made Web2c into a real distribution long
-before I had ever used it or even heard of it, and Tom Rokicki did the
-original implementation. When I started, I was using 'pxp' and 'pc' on
-VAX 11/750's and the hot new Sun 2 machines.)
-
- It must have been later in 1990 and 1991 that I started working on
-'TeX for the Impatient'. Dvips, Xdvi, Web2c, and the GNU fontutils
-(which I was also writing at the time) all used different environment
-variables, and, more importantly, had different bugs in their path
-searching. This became extremely painful, as I was stressing everything
-to the limit working on the book. I also desperately wanted to
-implement subdirectory searching, since I couldn't stand putting
-everything in one big directory, and also couldn't stand having to
-explicitly specify 'cm', 'pandora', ... in a path.
-
- In the first incarnation, I just hacked separately on each
-program--that was the original subdirectory searching code in both Xdvi
-and Dvips. That is, I tried to go with the flow in each program, rather
-than changing the program's calling sequences to conform to new
-routines.
-
- Then, as bugs inevitably appeared, I found I was fixing the same
-thing three times (Web2c and fontutils were already sharing code, since
-I maintained both of those--there was no Dvipsk or Xdvik or Dviljk at
-this point). After a while, I finally started sharing source files.
-They weren't yet a library, though. I just kept things up to date with
-shell scripts. (I was developing on a 386 running ISC 2.2 at the time,
-and so didn't have symbolic links. An awful experience.)
-
- The ChangeLogs for Xdvik and Dvipsk record initial releases of those
-distributions in May and June 1992. I think it was because I was tired
-of the different configuration strategies of each program, not so much
-because of the path searching. Autoconf was being developed by David
-MacKenzie and others, and I was adapting it to TeX and friends.
-
- I started to make a separate library that other programs could link
-with on my birthday in April 1993, according to the ChangeLog. I don't
-remember exactly why I finally took the time to make it a separate
-library; a conversation with david zuhn initiated it. Just seemed like
-it was time.
-
- Dviljk got started in March 1994 after I bought a Laserjet 4.
-(Kpathsea work got suspended while Norm Walsh and I, with Gustaf
-Neumann's help, implemented a way for TeX to get at all those neat
-builtin LJ4 fonts ... such a treat to have something to typeset in
-besides Palatino!)
-
- By spring of 1995, I had implemented just about all the
-path-searching features in Kpathsea that I plan to, driven beyond my
-initial goals by Thomas Esser and others. I then started to integrate
-Web2c with Kpathsea. After the release of a stable Web2c, I hope to be
-able to stop development, and turn most of my attention back to making
-fonts for GNU. (Always assuming Micros**t hasn't completely obliterated
-Unix by then, or that software patents haven't stopped software
-development by anybody smaller than a company with a
-million-dollar-a-year legal budget. Which is actually what I think is
-likely to happen, but that's another story...)
-
- [Olaf writes.] At the end of 1997, Unix is still alive and kicking,
-individuals still develop software, and Web2c development still
-continues. Karl had been looking for some time for someone to take up
-part of the burden, and I volunteered.
-
- [Karl writes again.] Indeed, time goes on. As of 2006 or so, Olaf's
-available time for Kpathsea was reduced, and I started taking overall
-care of it again, although I did not do any significant new development.
-In 2009, Taco Hoekwater implemented a major rearrangement to make the
-library suitable for use within the MetaPost library (*note Programming
-overview::). Also, for some years now, Peter Breitenlohner has made
-many improvements to the infrastructure and kept it up-to-date with
-respect to the overall TeX Live build, where Kpathsea is now maintained.
-
-
-File: kpathsea.info, Node: unixtex.ftp, Next: Security, Prev: Introduction, Up: Top
-
-2 'unixtex.ftp': Obtaining TeX
-******************************
-
-This is <ftp://tug.org/tex/unixtex.ftp>, a.k.a.
-<https://tug.org/unixtex.ftp>, last updated 29 February 2020. Email
-<tex-k@tug.org> with comments or questions.
-
- The principal free TeX distribution for Unix-like systems is TeX
-Live, on the web at <http://tug.org/texlive>. The pages there describe
-many ways to acquire and/or build TeX, over the Internet or on physical
-media, both the sources and precompiled binaries for many systems,
-either standalone or as part of various operating system distributions.
-
- Web2c, Kpathsea, Dvips, and Dviljk, among others, are no longer
-released as a separate packages. Their sources are now maintained as
-part of TeX Live.
-
- The host ftp.cs.stanford.edu is the original source for the files for
-which Donald Knuth is directly responsible: 'tex.web', 'plain.tex', etc.
-However, unless you want to undertake the project of building your TeX
-system from scratch, it is more reliable and less work to retrieve these
-files as part of a larger package.
-
- In any case, the Stanford ftp site is not the canonical source for
-anything except what was created as part of Knuth's original TeX, so do
-not rely on any other files available there being up-to-date. The best
-place to check for up-to-date files is CTAN (the Comprehensive TeX
-Archive Network), <https://ctan.org>.
-
-
-File: kpathsea.info, Node: Security, Next: TeX directory structure, Prev: unixtex.ftp, Up: Top
-
-3 Security
-**********
-
-None of the programs in the TeX system require any special system
-privileges, so there's no first-level security concern of people gaining
-illegitimate root access.
-
- A TeX document, however, can write to arbitrary files, e.g.,
-'~/.rhosts', and thus an unwitting user who runs TeX on a random
-document is vulnerable to a trojan horse attack. This loophole is
-closed by default, but you can be permissive if you so desire in
-'texmf.cnf'. *Note (web2c)tex invocation::. MetaPost has the same
-issue.
-
- Dvips, Xdvi, and TeX can also execute shell commands under some
-circumstances. To disable this, see the '-R' option in *note
-(dvips)Option details::, the xdvi man page, and *note (web2c)tex
-invocation::, respectively.
-
- Another security issue arises because it's very useful--almost
-necessary--to make arbitrary fonts on user demand with 'mktexpk' and
-friends. Where do these files get installed? By default, the 'mktexpk'
-distributed with Kpathsea assumes a world-writable '/var/tmp' directory;
-this is a simple and convenient approach, but it may not suit your
-situation because it means that a local cache of fonts is created on
-every machine.
-
- To avoid this duplication, many people consider a shared, globally
-writable font tree desirable, in spite of the potential security
-problems. To do this you should change the value of 'VARTEXFONTS' in
-'texmf.cnf' to refer to some globally known directory. *Note mktex
-configuration::.
-
- The first restriction you can apply is to make newly-created
-directories under 'texmf' be append-only with an option in 'mktex.cnf'.
-*Note mktex configuration::.
-
- Another approach is to establish a group (or user) for TeX files,
-make the 'texmf' tree writable only to that group (or user), and make
-'mktexpk' et al. setgid to that group (or setuid to that user). Then
-users must invoke the scripts to install things. (If you're worried
-about the inevitable security holes in scripts, then you could write a C
-wrapper to exec the script.)
-
- The 'mktex...' scripts install files with the same read and write
-permissions as the directory they are installed in. The executable,
-sgid, suid, and sticky bits are always cleared.
-
- Any directories created by the 'mktex...' scripts have the same
-permissions as their parent directory, unless the 'appendonlydir'
-feature is used, in which case the sticky bit is always set.
-
-
-File: kpathsea.info, Node: TeX directory structure, Next: Path searching, Prev: Security, Up: Top
-
-4 TeX directory structure
-*************************
-
-This section describes the default installation hierarchy of the
-distribution. It conforms to both the GNU coding standards and the TeX
-directory structure (TDS) standard. For rationale and further
-explanation, please see those documents. The GNU document is available
-from <https://gnu.org/prep/standards>. The TDS document is available
-from <http://mirror.ctan.org/tds> (*note unixtex.ftp::).
-
- In short, here is a skeleton of the default directory structure,
-extracted from the TDS document:
-
- PREFIX/ installation root ('/usr/local' by default)
- bin/ executables
- man/ man pages
- include/ C header files
- info/ GNU info files
- lib/ libraries ('libkpathsea.*')
- share/ architecture-independent files
- texmf/ TDS root
- bibtex/ BibTeX input files
- bib/ BibTeX databases
- base/ base distribution (e.g., 'xampl.bib')
- misc/ single-file databases
- PKG/ name of a package
- bst/ BibTeX style files
- base/ base distribution (e.g., 'plain.bst', 'acm.bst')
- misc/ single-file styles
- PKG/ name of a package
- doc/ additional documentation
- dvips/ '.pro', '.ps', 'psfonts.map'
- fonts/ font-related files
- TYPE/ file type (e.g., 'tfm', 'pk')
- MODE/ type of output device (types 'pk' and 'gf' only)
- SUPPLIER/ name of a font supplier (e.g., 'public')
- TYPEFACE/ name of a typeface (e.g., 'cm')
- dpiNNN/ font resolution (types 'pk' and 'gf' only)
- metafont/ Metafont (non-font) input files
- base/ base distribution (e.g., 'plain.mf')
- misc/ single-file packages (e.g., 'modes.mf')
- PKG/ name of a package (e.g., 'mfpic')
- metapost/ MetaPost input files
- base/ base distribution (e.g., 'plain.mp')
- misc/ single-file packages
- PKG/ name of a package
- support/ support files for MetaPost-related utilities (e.g., 'trfonts.map')
- mft/ 'MFT' inputs (e.g., 'plain.mft')
- tex/ TeX input files
- FORMAT/ name of a format (e.g., 'plain')
- base/ base distribution for FORMAT (e.g., 'plain.tex')
- misc/ single-file packages (e.g., 'webmac.tex')
- local/ local additions to or local configuration files for FORMAT
- PKG/ name of a package (e.g., 'graphics', 'mfnfss')
- generic/ format-independent packages
- hyphen/ hyphenation patterns (e.g., 'hyphen.tex')
- images/ image input files (e.g., Encapsulated PostScript)
- misc/ single-file format-independent packages (e.g., 'null.tex').
- PKG/ name of a package (e.g., 'babel')
- web2c/ implementation-dependent files ('.pool', '.fmt', 'texmf.cnf', etc.)
-
- Some concrete examples for most file types:
-
- /usr/local/bin/tex
- /usr/local/man/man1/xdvi.1
- /usr/local/info/kpathsea.info
- /usr/local/lib/libkpathsea.a
- /usr/local/share/texmf/bibtex/bst/base/plain.bst
- /usr/local/share/texmf/fonts/pk/ljfour/public/cm/cmr10.600pk
- /usr/local/share/texmf/fonts/source/public/pandora/pnr10.mf
- /usr/local/share/texmf/fonts/tfm/public/cm/cmr10.tfm
- /usr/local/share/texmf/fonts/type1/adobe/utopia/putr.pfa
- /usr/local/share/texmf/metafont/base/plain.mf
- /usr/local/share/texmf/metapost/base/plain.mp
- /usr/local/share/texmf/tex/plain/base/plain.tex
- /usr/local/share/texmf/tex/generic/hyphen/hyphen.tex
- /usr/local/share/texmf/web2c/tex.pool
- /usr/local/share/texmf/web2c/tex.fmt
- /usr/local/share/texmf/web2c/texmf.cnf
-
-
-File: kpathsea.info, Node: Path searching, Next: TeX support, Prev: TeX directory structure, Up: Top
-
-5 Path searching
-****************
-
-This chapter describes the generic path searching mechanism Kpathsea
-provides. For information about searching for particular file types
-(e.g., TeX fonts), see the next chapter.
-
- This section, with minor differences, has been translated into
-several other languages (Chinese, Spanish, Russian, Japanese, French,
-German, ...) as part of the TeX Live guide; see
-<https://tug.org/texlive/doc.html> for links.
-
-* Menu:
-
-* Searching overview:: Basic scheme for searching.
-* Path sources:: Where search paths can be defined.
-* Path expansion:: Special constructs in search paths.
-* Casefolding search:: Fallback to case-insensitive search.
-* Filename database:: Using an externally-built list to search.
-* Invoking kpsewhich:: Standalone path lookup.
-
-
-File: kpathsea.info, Node: Searching overview, Next: Path sources, Up: Path searching
-
-5.1 Searching overview
-======================
-
-A "search path" is a colon-separated list of "path elements", which are
-directory names with a few extra frills. A search path can come from (a
-combination of) many sources; see below. To look up a file 'foo' along
-a path '.:/dir', Kpathsea checks each element of the path in turn: first
-'./foo', then '/dir/foo', returning the first match (or possibly all
-matches).
-
- The "colon" and "slash" mentioned here aren't necessarily ':' and '/'
-on non-Unix systems. Kpathsea tries to adapt to other operating
-systems' conventions.
-
- To check a particular path element E, Kpathsea first sees if a
-prebuilt database (*note Filename database::) applies to E, i.e., if the
-database is in a directory that is a prefix of E. If so, the path
-specification is matched against the contents of the database.
-
- If the database does not exist, or does not apply to this path
-element, or contains no matches, the filesystem is searched (if this was
-not forbidden by the specification with '!!' and if the file being
-searched for must exist). Kpathsea constructs the list of directories
-that correspond to this path element, and then checks in each for the
-file being searched for. (To help speed future lookups of files in the
-same directory, the directory in which a file is found is floated to the
-top of the directory list.)
-
- The "file must exist" condition comes into play with VF files and
-input files read by the TeX '\openin' command. These files might very
-well not exist (consider 'cmr10.vf'), and so it would be wrong to search
-the disk for them. Therefore, if you fail to update 'ls-R' when you
-install a new VF file, it will not be found.
-
- Each path element is checked in turn: first the database, then the
-disk. If a match is found, the search stops and the result is returned
-(unless the search explicitly requested all matches). This avoids
-possibly-expensive processing of path specifications that are never
-needed on a particular run.
-
- On Unix-like systems, if no match is found by any of the above, and
-the path element allows checking the filesystem (per the above), a final
-check is made for a case-insensitive match. Thus, looking for a name
-like './FooBar.TeX' will match a file './foobar.tex', and vice versa.
-This is not done on Windows. *Note Casefolding search::.
-
- Although the simplest and most common path element is a directory
-name, Kpathsea supports additional features in search paths: layered
-default values, environment variable names, config file values, users'
-home directories, and recursive subdirectory searching. Thus, we say
-that Kpathsea "expands" a path element, meaning transforming all the
-magic specifications into the basic directory name or names. This
-process is described in the sections below. It happens in the same
-order as the sections.
-
- Exception to all of the above: If the filename being searched for is
-absolute or explicitly relative, i.e., starts with '/' or './' or '../',
-Kpathsea simply checks if that file exists, with a fallback to a
-casefolding match if needed and enabled, as described above.
-
- Ordinarily, if Kpathsea tries to access a file or directory that
-cannot be read, it gives a warning. This is so you will be alerted to
-directories or files that accidentally lack any read permission (for
-example, a 'lost+found' directory). If you prefer not to see these
-warnings, include the value 'readable' in the 'TEX_HUSH' environment
-variable or config file value.
-
- This generic path searching algorithm is implemented in
-'kpathsea/pathsearch.c'. It is employed by a higher-level algorithm
-when searching for a file of a particular type (*note File lookup::, and
-*note Glyph lookup::).
-
-
-File: kpathsea.info, Node: Path sources, Next: Path expansion, Prev: Searching overview, Up: Path searching
-
-5.2 Path sources
-================
-
-A search path or other configuration value can come from many sources.
-In the order in which Kpathsea looks for them:
-
- 1. A command-line option such as '--cnf-line', available in
- 'kpsewhich' and most TeX engines. *Note Path searching options::.
-
- A user-set environment variable, e.g., 'TEXINPUTS'. Environment
- variables with an underscore and the program name appended
- override; for example, 'TEXINPUTS_latex' overrides 'TEXINPUTS' if
- the program being run is named 'latex'.
-
- 2. A program-specific configuration file, e.g., an 'S /a:/b' line in
- Dvips' 'config.ps' (*note (dvips)Config files::).
-
- 3. A line in a Kpathsea configuration file 'texmf.cnf', e.g.,
- 'TEXINPUTS=/c:/d' (see below).
-
- 4. The compile-time default (specified in 'kpathsea/paths.h').
-
- You can see each of these values for a given search path by using the
-debugging options (*note Debugging::).
-
- These sources may be combined via default expansion (*note Default
-expansion::).
-
-* Menu:
-
-* Config files:: Kpathsea's runtime config files (texmf.cnf).
-
-
-File: kpathsea.info, Node: Config files, Up: Path sources
-
-5.2.1 Config files
-------------------
-
-As mentioned above, Kpathsea reads "runtime configuration files" named
-'texmf.cnf' for search path and other definitions. The search path used
-to look for these configuration files is named 'TEXMFCNF', and is
-constructed in the usual way, as described above, except that
-configuration files cannot be used to define the path, naturally; also,
-an 'ls-R' database is not used to search for them.
-
- Kpathsea reads _all_ 'texmf.cnf' files in the search path, not just
-the first one found; definitions in earlier files override those in
-later files. Thus, if the search path is '.:$TEXMF', values from
-'./texmf.cnf' override those from '$TEXMF/texmf.cnf'.
-
- If Kpathsea cannot find any 'texmf.cnf' file, it reports a warning
-including all the directories it checked. If you don't want to see this
-warning, set the environment variable 'KPATHSEA_WARNING' to the single
-character '0' (zero, not oh).
-
- While (or instead of) reading this description, you may find it
-helpful to look at the distributed 'texmf.cnf', which uses or at least
-mentions most features. The format of 'texmf.cnf' files follows:
-
- * Comments start with '%', either at the beginning of a line or
- preceded by whitespace, and continue to the end of the line. That
- is, similar to most shells, a '%' in the "middle" of a value does
- not start a comment. Examples:
-
- % this is a comment
- var = a%b % but the value of var will be "a%b"
-
- * Blank lines are ignored.
-
- * A '\' at the end of a line acts as a continuation character, i.e.,
- the next line is appended. Whitespace at the beginning of
- continuation lines is not ignored.
-
- * Each remaining line will look like:
-
- VARIABLE [. PROGNAME] [=] VALUE
-
- where the '=' and surrounding whitespace is optional.
-
- * The VARIABLE name may contain any character other than whitespace,
- '=', or '.', but sticking to 'A-Za-z_' is safest.
-
- * If '.PROGNAME' is present (preceding spaces are ignored), the
- definition only applies if the program that is running is named
- (i.e., the last component of 'argv[0]' is) PROGNAME or
- 'PROGNAME.{exe,bat,cmd,...}'. Most notably, this allows different
- flavors of TeX to have different search paths. The PROGNAME value
- is used literally, without variable or other expansions.
-
- * Considered as strings, VALUE may contain any character. However,
- in practice most 'texmf.cnf' values are related to path expansion,
- and since various special characters are used in expansion, such as
- braces and commas, they cannot be used in directory names.
-
- The '$VAR.PROG' feature is not available on the right-hand side;
- instead, you must use an additional variable (see below for
- example).
-
- A ';' in VALUE is translated to ':' if running under Unix, in order
- to have a single 'texmf.cnf' that can support both Unix and Windows
- systems. This translation happens with any value, not just search
- paths, but fortunately in practice ';' is not needed in other
- values.
-
- * All definitions are read before anything is expanded, so you can
- use variables before they are defined (like Make, unlike most other
- programs).
-
-Here is a configuration file fragment illustrating most of these points:
-
- % TeX input files -- i.e., anything to be found by \input or \openin ...
- latex209_inputs = .:$TEXMF/tex/latex209//:$TEXMF/tex//
- latex2e_inputs = .:$TEXMF/tex/latex//:$TEXMF/tex//
- TEXINPUTS = .:$TEXMF/tex//
- TEXINPUTS.latex209 = $latex209_inputs
- TEXINPUTS.latex2e = $latex2e_inputs
- TEXINPUTS.latex = $latex2e_inputs
-
- This format has some similarity to Bourne shell scripts--change the
-comment character to '#', disallow spaces around the '=', and get rid of
-the '.NAME' convention, and it could be run through the shell. However,
-there seemed little advantage in this, since all the information would
-have to passed back to Kpathsea and parsed there anyway, since the 'sh'
-process couldn't affect its parent's environment.
-
- The combination of spaces being ignored before the '.' of a program
-name qualifer and the optional '=' for the assignment has an unexpected
-consequence: if the value begins with a literal '.' and the '=' is
-omitted, the intended value is interpreted as a program name. For
-example, a line 'var .;/some/path' is taken as an empty value for 'var'
-running under the program named ';/some/path'. To diagnose this,
-Kpathsea warns if the program name contains a path separator or other
-special character. The simplest way to avoid the problem is to use the
-'='.
-
- Exactly when a character will be considered special or act as itself
-depends on the context in which it is used. The rules are inherent in
-the multiple levels of interpretation of the configuration (parsing,
-expansion, search, ...) and so cannot be concisely stated,
-unfortunately. There is no general escape mechanism; in particular, '\'
-is not an "escape character" in 'texmf.cnf' files. When it comes
-choosing directory names for installation, it is safest to avoid them
-all.
-
- The implementation of all this is in 'kpathsea/cnf.c'.
-
-
-File: kpathsea.info, Node: Path expansion, Next: Casefolding search, Prev: Path sources, Up: Path searching
-
-5.3 Path expansion
-==================
-
-Kpathsea recognizes certain special characters and constructions in
-search paths, similar to that in shells. As a general example:
-'~$USER/{foo,bar}//baz' expands to all subdirectories under directories
-'foo' and 'bar' in $USER's home directory that contain a directory or
-file 'baz'.
-
- These expansions are explained in the sections below.
-
-* Menu:
-
-* Default expansion:: a: or :a or a::b expands to a default.
-* Variable expansion:: $foo and ${foo} expand to environment values.
-* Tilde expansion:: ~ and ~user expand to home directories.
-* Brace expansion:: a{foo,bar}b expands to afoob abarb.
-* KPSE_DOT expansion:: . is replaced with $KPSE_DOT if it is defined.
-* Subdirectory expansion:: a// and a//b recursively expand to subdirs.
-
-
-File: kpathsea.info, Node: Default expansion, Next: Variable expansion, Up: Path expansion
-
-5.3.1 Default expansion
------------------------
-
-If the highest-priority search path (*note Path sources::) contains an
-"extra colon" (i.e., leading, trailing, or doubled), Kpathsea inserts at
-that point the next-highest-priority search path that is defined. If
-that inserted path has an extra colon, the same happens with the
-next-highest. (An extra colon in the compile-time default value has
-unpredictable results, so installers beware.)
-
- For example, given an environment variable setting
-
- setenv TEXINPUTS /home/karl:
-
-and a 'TEXINPUTS' value from 'texmf.cnf' of
-
- .:$TEXMF//tex
-
-then the final value used for searching will be:
-
- /home/karl:.:$TEXMF//tex
-
- Put another way, default expansion works on "formats" (search paths),
-and not directly on environment variables. Example, showing the
-trailing ':' ignored in the first case and expanded in the second:
-
- $ env TTFONTS=/tmp: kpsewhich --expand-path '$TTFONTS'
- /tmp
- $ env TTFONTS=/tmp: kpsewhich --show-path=.ttf
- /tmp:.:/home/olaf/texmf/fonts/truetype//:...
-
- Since Kpathsea looks for multiple configuration files, it would be
-natural to expect that (for example) an extra colon in './texmf.cnf'
-would expand to the path in '$TEXMF/texmf.cnf'. Or, with Dvips'
-configuration files, that an extra colon in 'config.$PRINTER' would
-expand to the path in 'config.ps'. This doesn't happen. It's not clear
-this would be desirable in all cases, and trying to devise a way to
-specify the path to which the extra colon should expand seemed truly
-baroque.
-
- Technicality: Since it would be useless to insert the default value
-in more than one place, Kpathsea changes only one extra ':' and leaves
-any others in place (they will eventually be ignored). Kpathsea checks
-first for a leading ':', then a trailing ':', then a doubled ':'.
-
- You can trace this by debugging "paths" (*note Debugging::). Default
-expansion is implemented in the source file 'kpathsea/kdefault.c'.
-
-
-File: kpathsea.info, Node: Variable expansion, Next: Tilde expansion, Prev: Default expansion, Up: Path expansion
-
-5.3.2 Variable expansion
-------------------------
-
-'$foo' or '${foo}' in a path element is replaced by (1) the value of an
-environment variable 'foo' (if defined); (2) the value of 'foo' from
-'texmf.cnf' (if defined); (3) the empty string.
-
- If the character after the '$' is alphanumeric or '_', the variable
-name consists of all consecutive such characters. If the character
-after the '$' is a '{', the variable name consists of everything up to
-the next '}' (braces may not be nested around variable names).
-Otherwise, Kpathsea gives a warning and ignores the '$' and its
-following character.
-
- You must quote the $'s and braces as necessary for your shell.
-_Shell_ variable values cannot be seen by Kpathsea, i.e., ones defined
-by 'set' in C shells and without 'export' in Bourne shells.
-
- For example, given
- setenv tex /home/texmf
- setenv TEXINPUTS .:$tex:${tex}prev
-the final 'TEXINPUTS' path is the three directories:
- .:/home/texmf:/home/texmfprev
-
- The '.PROGNAME' suffix on variables and '_PROGNAME' on environment
-variable names are not implemented for general variable expansions.
-These are only recognized when search paths are initialized (*note Path
-sources::).
-
- Variable expansion is implemented in the source file
-'kpathsea/variable.c'.
-
-
-File: kpathsea.info, Node: Tilde expansion, Next: Brace expansion, Prev: Variable expansion, Up: Path expansion
-
-5.3.3 Tilde expansion
----------------------
-
-A leading '~' in a path element is replaced by the value of the
-environment variable 'HOME', or '.' if 'HOME' is not set. On Windows,
-the environment variable 'USERPROFILE' is checked instead of 'HOME'.
-
- A leading '~USER' in a path element is replaced by USER's home
-directory from the system 'passwd' database.
-
- For example,
- setenv TEXINPUTS ~/mymacros:
-
-will prepend a directory 'mymacros' in your home directory to the
-default path.
-
- As a special case, if a home directory ends in '/', the trailing
-slash is dropped, to avoid inadvertently creating a '//' construct in
-the path. For example, if the home directory of the user 'root' is '/',
-the path element '~root/mymacros' expands to just '/mymacros', not
-'//mymacros'.
-
- Tilde expansion is implemented in the source file 'kpathsea/tilde.c'.
-
-
-File: kpathsea.info, Node: Brace expansion, Next: KPSE_DOT expansion, Prev: Tilde expansion, Up: Path expansion
-
-5.3.4 Brace expansion
----------------------
-
-'x{A,B}y' expands to 'xAy:xBy'. For example:
-
- foo/{1,2}/baz
-
-expands to 'foo/1/baz:foo/2/baz'. ':' is the path separator on the
-current system; e.g., on a Windows system, it's ';'.
-
- Braces can be nested; for example, 'x{A,B{1,2}}y' expands to
-'xAy:xB1y:xB2y'.
-
- Multiple non-nested braces are expanded from right to left; for
-example, 'x{A,B}{1,2}y' expands to 'x{A,B}1y:x{A,B}2y', which expands to
-'xA1y:xB1y:xA2y:xB2y'.
-
- This feature can be used to implement multiple TeX hierarchies, by
-assigning a brace list to '$TEXMF', as mentioned in 'texmf.in'.
-
- You can also use the path separator instead of the comma. The last
-example could have been written 'x{A:B}{1:2}y' (on Unix).
-
- Brace expansion is implemented in the source file
-'kpathsea/expand.c'.
-
-
-File: kpathsea.info, Node: KPSE_DOT expansion, Next: Subdirectory expansion, Prev: Brace expansion, Up: Path expansion
-
-5.3.5 'KPSE_DOT' expansion
---------------------------
-
-When 'KPSE_DOT' is defined in the environment, it names a directory that
-should be considered the current directory for the purpose of looking up
-files in the search paths. This feature is needed by the 'mktex...'
-scripts *note mktex scripts::, because these change the working
-directory. You should not ever define it yourself.
-
-
-File: kpathsea.info, Node: Subdirectory expansion, Prev: KPSE_DOT expansion, Up: Path expansion
-
-5.3.6 Subdirectory expansion
-----------------------------
-
-Two or more consecutive slashes in a path element following a directory
-D is replaced by all subdirectories of D: first those subdirectories
-directly under D, then the subsubdirectories under those, and so on. At
-each level, the order in which the directories are searched is
-unspecified. (It's "directory order", and definitely not alphabetical.)
-
- If you specify any filename components after the '//', only
-subdirectories which match those components are included. For example,
-'/a//b' would expand into directories '/a/1/b', '/a/2/b', '/a/1/1/b',
-and so on, but not '/a/b/c' or '/a/1'.
-
- You can include multiple '//' constructs in the path.
-
- '//' at the beginning of a path is ignored; you didn't really want to
-search every directory on the system, did you?
-
- I should mention one related implementation trick, which I took from
-GNU find. Matthew Farwell suggested it, and David MacKenzie implemented
-it.
-
- The trick is that in every real Unix implementation (as opposed to
-the POSIX specification), a directory which contains no subdirectories
-will have exactly two links (namely, one for '.' and one for '..').
-That is to say, the 'st_nlink' field in the 'stat' structure will be
-two. Thus, we don't have to stat everything in the bottom-level (leaf)
-directories--we can just check 'st_nlink', notice it's two, and do no
-more work.
-
- But if you have a directory that contains a single subdirectory and
-500 regular files, 'st_nlink' will be 3, and Kpathsea has to stat every
-one of those 501 entries. Therein lies slowness.
-
- You can disable the trick by undefining 'ST_NLINK_TRICK' in
-'kpathsea/config.h'. (It is undefined by default except under Unix.)
-
- Unfortunately, in some cases files in leaf directories are 'stat''d:
-if the path specification is, say, '$TEXMF/fonts//pk//', then files in a
-subdirectory '.../pk', even if it is a leaf, are checked. The reason
-cannot be explained without reference to the implementation, so read
-'kpathsea/elt-dirs.c' (search for 'may descend') if you are curious.
-And if you find a way to solve the problem, please let me know.
-
- Subdirectory expansion is implemented in the source file
-'kpathsea/elt-dirs.c'.
-
-
-File: kpathsea.info, Node: Casefolding search, Next: Filename database, Prev: Path expansion, Up: Path searching
-
-5.4 Casefolding search
-======================
-
-In Kpathsea version 6.3.0 (released with TeX Live 2018), a new fallback
-search was implemented on Unix-like systems, including Macs: for each
-path element in turn, if no match is found by the normal search, and the
-path element allows for checking the filesystem, a second check is made
-for a case-insensitive match.
-
- This is enabled at compile-time on Unix systems, and enabled at
-runtime by setting the configuration variable 'texmf_casefold_search',
-to a true value, e.g., '1'; this is done by default in TeX Live.
-
-* Menu:
-
-* Rationale: Casefolding rationale.
-* Examples: Casefolding examples.
-
-
-File: kpathsea.info, Node: Casefolding rationale, Next: Casefolding examples, Up: Casefolding search
-
-5.4.1 Casefolding rationale
----------------------------
-
-The purpose of the fallback casefolding search is to ease moving complex
-documents between case-insensitive (file)systems and case-sensitive
-ones. In particular, Apple decided to make the default filesystem on
-Macs be case-insensitive some years ago, and this has exacerbated a
-problem of people creating documents that use, say, an image under the
-name 'foo.jpg', while the actual file is named 'foo.JPG' or 'Foo.jpg'.
-It works on the Mac but if the document is transferred and run on a
-standard case-sensitive Unix (file)system, the file can't be found, due
-only to differences in case.
-
- This same problematic scenario has always existed on Windows, but for
-whatever reason, it has become much more common since Apple also went to
-a case-insensitive filesystem. Hence the relatively late change to the
-Kpathsea behavior.
-
- The fallback case-insensitive search is omitted at compile-time on
-Windows, where (for practical purposes) all file names are
-case-insensitive at the kernel level, and so the normal search will
-already have definitively matched or not. Therefore, search results in
-unusual cases can be different on Windows and Unix--but this has always
-been true.
-
-
-File: kpathsea.info, Node: Casefolding examples, Prev: Casefolding rationale, Up: Casefolding search
-
-5.4.2 Casefolding examples
---------------------------
-
-The casefolding implementation prefers exact matches to casefolded
-matches within a given path element, so as to retain most compatibility.
-Backward compatibility is not perfect, however, as a casefolded match
-may be found in an earlier path element than an exact match was
-previously found (see example #4 below). Still, preferring the match in
-the earlier element seemed potentially less confusing than otherwise,
-and is in fact consistent with past behavior on Windows. Since case
-mismatches are rare to begin with, and name collisions with respect only
-to case thus even more rare, the hope is that it will not cause
-difficulties in practice.
-
- If it's desirable in a given situation to have the exact same search
-behavior as previously, that can be accomplished by setting the
-configuration variable 'texmf_casefold_search' to '0' (*note Path
-sources::).
-
- Some examples to illustrate the new behavior follow.
-
- Example #1: suppose the file './foobar.tex' exists. Now, searching
-for './FooBar.TeX' (or any other case variation) will succeed, returning
-'./foobar.tex'--the name as stored on disk. In previous releases, or if
-'texmf_casefold_search' is false, the search would fail.
-
- Example #2: suppose we are using a case-sensitive (file)system, and
-the search path is '.:/somedir', and the files './foobar.tex' and
-'/somedir/FooBar.TeX' both exist. Both now and previously, searching
-for 'foobar.tex' returns './foobar.tex'. However, searching for
-'FooBar.TeX' now returns './foobar.tex' instead of
-'/somedir/FooBar.TeX'; this is the incompatibility mentioned above.
-Also (as expected), searching for 'FOOBAR.TEX' (or whatever variation)
-will now return './foobar.tex', whereas before it would fail. Searching
-for all ('kpsewhich --all') 'foobar.tex' will return both matches.
-
- Example #3: same as example #2, but on a case-insensitive
-(file)system: both now and previously, searching for 'FooBar.TeX'
-returns './foobar.tex', since the system considers that a match. The
-Kpathsea casefolding never comes into play.
-
- Example #4: if we have (on a case-sensitive system) both
-'./foobar.tex' and './FOOBAR.TEX', searching with the exact case returns
-that exact match, now and previously. Searching for 'FooBar.tex' will
-now return one or the other (chosen arbitrarily), rather than failing.
-Perhaps unexpectedly, searching for all 'foobar.tex' or 'FooBar.tex'
-will also return only one or the other, not both (see more below).
-
- Example #5: the font file 'STIX-Regular.otf' is included in TeX Live
-in the system directory 'texmf-dist/fonts/opentype/public/stix'.
-Because Kpathsea never searches the disk in the big system directory,
-the casefolding is not done, and a search for 'stix-regular.otf' will
-fail (on case-sensitive systems), as it always has.
-
- The caveat about not searching the disk amounts to saying that
-casefolding does not happen in the trees specified with '!!' (*note
-ls-R::), that is, where only database ('ls-R') searching is done. In
-TeX Live, that is the 'texmf-local' and 'texmf-dist' trees (also
-'$TEXMFSYSCONFIG' and '$TEXMFSYSVAR', but those are rarely noticed).
-The rationale for this is that in practice, case mangling happens with
-user-created files, not with packages distributed as part of the TeX
-system.
-
- One more caveat: the purpose of 'kpsewhich' is to exercise the path
-searching in Kpathsea as it is actually done. Therefore, as shown
-above, 'kpsewhich --all' will not return all matches regardless of case
-within a given path element. If you want to find all matches in all
-directories, 'find' is the best tool, although the setup takes a couple
-steps:
-
- kpsewhich -show-path=tex >/tmp/texpath # search path specification
- kpsewhich -expand-path="`cat /tmp/texpath`" >/tmp/texdirs # all dirs
- tr ':' '\n' </tmp/texdirs >/tmp/texdirlist # colons to newlines
- find `cat /tmp/texdirlist` -iname somefile.tex -print </tmp/texdirlist
-
- Sorry that it's annoyingly lengthy, but implementing this inside
-Kpathsea would be a lot of error-prone trouble for something that is
-only useful for debugging. If your 'find' does not support '-iname',
-you can get GNU Find from <https://gnu.org/software/findutils>.
-
- The casefolding search is implemented in the source file
-'kpathsea/pathsearch.c'. Two implementation points:
-
- * Kpathsea never tries to check if a given directory resides on a
- case-insensitive filesystem, because there is no efficient and
- portable way to do so. All it does is try to see if a potential
- file name is a readable normal file (with, usually, the 'access'
- system call).
-
- * Kpathsea does not do any case-insensitive matching of the
- directories along the path. It's not going to find
- '/Some/Random/file.tex' when looking for '/some/random/file.tex'.
- The casefolding only happens with the elements of the leaf
- directory.
-
-
-File: kpathsea.info, Node: Filename database, Next: Invoking kpsewhich, Prev: Casefolding search, Up: Path searching
-
-5.5 Filename database ('ls-R')
-==============================
-
-Kpathsea goes to some lengths to minimize disk accesses for searches
-(*note Subdirectory expansion::). Nevertheless, in practice searching
-every possible directory in typical TeX installations takes an
-excessively long time.
-
- Therefore, Kpathsea can use an externally-built "filename database"
-file named 'ls-R' that maps files to directories, thus avoiding the need
-to exhaustively search the disk.
-
- A second database file 'aliases' allows you to give additional names
-to the files listed in 'ls-R'.
-
- The 'ls-R' and 'aliases' features are implemented in the source file
-'kpathsea/db.c'.
-
-* Menu:
-
-* ls-R:: The main filename database.
-* Filename aliases:: Aliases for those names.
-* Database format:: Syntax details of the database file.
-
-
-File: kpathsea.info, Node: ls-R, Next: Filename aliases, Up: Filename database
-
-5.5.1 'ls-R'
-------------
-
-As mentioned above, you must name the main filename database 'ls-R'.
-You can put one at the root of each TeX installation hierarchy you wish
-to search ('$TEXMF' by default, which expands to a braced list of
-several hierarchies in TeX Live).
-
- Kpathsea looks for 'ls-R' files along the 'TEXMFDBS' path. It is
-best for this to contain all and only those hierarchies from '$TEXMF'
-which are specified with '!!'--and also to specify them with '!!' in
-'TEXMFDBS'. (See the end of this section for more on '!!'.)
-
- The recommended way to create and maintain 'ls-R' is to run the
-'mktexlsr' script, which is installed in '$(bindir)' ('/usr/local/bin'
-by default). That script goes to some trouble to follow symbolic links
-as necessary, etc. It's also invoked by the distributed 'mktex...'
-scripts.
-
- At its simplest, though, you can build 'ls-R' with the command
- cd /YOUR/TEXMF/ROOT && ls -LAR ./ >ls-R
-
-presuming your 'ls' produces the right output format (see the section
-below). GNU 'ls', for example, outputs in this format. Also presuming
-your 'ls' hasn't been aliased in a system file (e.g., '/etc/profile') to
-something problematic, e.g., 'ls --color=tty'. In that case, you will
-have to disable the alias before generating 'ls-R'. For the precise
-definition of the file format, see *note Database format::.
-
- Regardless of whether you use the supplied script or your own, you
-will almost certainly want to invoke it via 'cron', so when you make
-changes in the installed files (say if you install a new LaTeX package),
-'ls-R' will be automatically updated. However, for those using TeX Live
-or system distributions, the package managers should run 'mktexlsr' as
-needed.
-
- The '-A' option to 'ls' includes files beginning with '.' (except for
-'.' and '..'), such as the file '.tex' included with the LaTeX tools
-package. (On the other hand, _directories_ whose names begin with '.'
-are always ignored.)
-
- If your system does not support symbolic links, omit the '-L'.
-
- 'ls -LAR /YOUR/TEXMF/ROOT' will also work. But using './' avoids
-embedding absolute pathnames, so the hierarchy can be easily
-transported. It also avoids possible trouble with automounters or other
-network filesystem conventions.
-
- Kpathsea warns you if it finds an 'ls-R' file, but the file does not
-contain any usable entries. The usual culprit is running plain 'ls -R'
-instead of 'ls -LR ./' or 'ls -R /YOUR/TEXMF/ROOT'. Another possibility
-is some system directory name starting with a '.' (perhaps if you are
-using AFS); Kpathsea ignores everything under such directories.
-
- If a particular path element begins with '!!', _only_ the database
-will be searched for that element, never the disk; and if the database
-does not exist, nothing at all will be searched. In TeX Live, most of
-the trees are specified with '!!'.
-
- For path elements that do not begin with '!!', if the database
-exists, it will be used, and the disk will not be searched. However, in
-this case, if the database does not exist, the disk will be searched.
-In TeX Live, the most notable case of this is the 'TEXMFHOME' tree, to
-allow users to add and remove files from their own tree without having
-to worry about 'ls-R'.
-
- (Aside: there are uncommon cases where a '!!' tree will be searched
-on disk even if the 'ls-R' file exists; they are too obscure to try to
-explain here. See 'pathsearch.c' in the source if you need to know.)
-
- To sum up: do not create an 'ls-R' file unless you also take care to
-keep it up to date. Otherwise newly-installed files will not be found.
-
-
-File: kpathsea.info, Node: Filename aliases, Next: Database format, Prev: ls-R, Up: Filename database
-
-5.5.2 Filename aliases
-----------------------
-
-In some circumstances, you may wish to find a file under several names.
-For example, suppose a TeX document was created using a DOS system and
-tries to read 'longtabl.sty'. But now it's being run on a Unix system,
-and the file has its original name, 'longtable.sty'. The file won't be
-found. You need to give the actual file 'longtable.sty' an alias
-'longtabl.sty'.
-
- You can handle this by creating a file 'aliases' as a companion to
-the 'ls-R' for the hierarchy containing the file in question. (You must
-have an 'ls-R' for the alias feature to work.)
-
- The format of 'aliases' is simple: two whitespace-separated words per
-line; the first is the real name 'longtable.sty', and second is the
-alias ('longtabl.sty'). These must be base filenames, with no directory
-components. 'longtable.sty' must be in the sibling 'ls-R'.
-
- Also, blank lines and lines starting with '%' or '#' are ignored in
-'aliases', to allow for comments.
-
- If a real file 'longtabl.sty' exists, it is used regardless of any
-aliases.
-
-
-File: kpathsea.info, Node: Database format, Prev: Filename aliases, Up: Filename database
-
-5.5.3 Database format
----------------------
-
-The "database" read by Kpathsea is a line-oriented file of plain text.
-The format is that generated by GNU (and most other) 'ls' programs given
-the '-R' option, as follows.
-
- * Blank lines are ignored.
-
- * If a line begins with '/' or './' or '../' and ends with a colon,
- it's the name of a directory. ('../' lines aren't useful, however,
- and should not be generated.)
-
- * All other lines define entries in the most recently seen directory.
- /'s in such lines will produce possibly-strange results.
-
- * Files with no preceding directory line are ignored.
-
- For example, here's the first few lines of 'ls-R' (which totals about
-30K bytes) on my system:
-
- bibtex
- dvips
- fonts
- ls-R
- metafont
- metapost
- tex
- web2c
-
- ./bibtex:
- bib
- bst
- doc
-
- ./bibtex/bib:
- asi.bib
- btxdoc.bib
- ...
-
-
-File: kpathsea.info, Node: Invoking kpsewhich, Prev: Filename database, Up: Path searching
-
-5.6 'kpsewhich': Standalone path searching
-==========================================
-
-The Kpsewhich program exercises the path searching functionality
-independent of any particular application. This can also be useful as a
-sort of 'find' program to locate files in your TeX hierarchies, perhaps
-in administrative scripts. It is used heavily in the distributed
-'mktex...' scripts.
-
- Synopsis:
-
- kpsewhich OPTION... FILENAME...
-
- The options and filename(s) to look up can be intermixed. Options
-can start with either '-' or '--', and any unambiguous abbreviation is
-accepted.
-
-* Menu:
-
-* Path searching options:: Changing the mode, resolution, etc.
-* Specially-recognized files:: Default formats for texmf.cnf, etc.
-* Auxiliary tasks:: Path and variable expansion, etc.
-* Standard options:: '--help' and '--version'.
-
-
-File: kpathsea.info, Node: Path searching options, Next: Specially-recognized files, Up: Invoking kpsewhich
-
-5.6.1 Path searching options
-----------------------------
-
-Kpsewhich looks up each non-option argument on the command line as a
-filename, and returns the first file found.
-
- Various options alter the path searching behavior:
-
-'--all'
- Report all matches found, one per line. By default, if there is
- more than one match, just one will be reported (chosen effectively
- at random). Exception: with the glyph formats ('pk', 'gf'), this
- option has no effect and only the first match is returned.
-
-'--casefold-search'
-'--no-casefold-search'
- Explicitly enable or disable the fallback to a case-insensitive
- search on Unix platforms (*note Casefolding search::); no effect on
- Windows. The default is enabled, set in 'texmf.cnf'. Disabling
- ('--no-casefold-search') does not mean that searches magically
- become case-sensitive when the underlying (file)system is
- case-insensitive, it merely means that Kpathsea does not do any
- casefolding itself.
-
-'--cnf-line=STR'
- Parse STR as if it were a line in the 'texmf.cnf' configuration
- file (*note Config files::), overriding settings in the actual
- configuration files, and also in the environment (*note Path
- sources::). This is implemented by making any settings from STR in
- the environment, overwriting any value already there. Thus, an
- extra colon in a '--cnf-line' value will refer to the value from a
- configuration file, not a user-set environment variable.
-
- Furthermore, any variable set from STR will also be set with the
- program name suffix. For example, 'pdftex
- --cnf-line=TEXINPUTS=/foo:' will set both 'TEXINPUTS' and
- 'TEXINPUTS_pdftex' in the environment (and the value will be '/foo'
- followed by the setting from 'texmf.cnf', ignoring any user-set
- 'TEXINPUTS').
-
- This behavior is desirable because, in practice, many variables in
- the distributed 'texmf.cnf' are program-specific, and the intuitive
- behavior is for values set on the command line with '--cnf-line' to
- override them.
-
-'--dpi=NUM'
- Set the resolution to NUM; this only affects 'gf' and 'pk' lookups.
- '-D' is a synonym, for compatibility with Dvips. Default is 600.
-
-'--engine=NAME'
- Set the engine name to NAME. By default it is not set. The engine
- name is used in some search paths to allow files with the same name
- but used by different engines to coexist.
-
- In particular, since the memory dump files ('.fmt'/'.base'/'.mem')
- are now stored in subdirectories named for the engine ('tex',
- 'pdftex', 'xetex', etc.), you must specify an engine name in order
- to find them. For example, 'cont-en.fmt' typically exists for both
- 'pdftex' and 'xetex'. With the default path settings, you can use
- '--engine=/' to look for any dump file, regardless of engine; if a
- dump file exists for more than one engine, it's indeterminate which
- one is returned. (The '/' ends up specifying a normal recursive
- search along the path where the dumps are stored, namely
- '$TEXMF/web2c{/$engine,}'.)
-
-'--format=NAME'
- Set the format for lookup to NAME. By default, the format is
- guessed from the filename, with 'tex' being used if nothing else
- fits. The recognized filename extensions (including any leading
- '.') are also allowable NAMEs.
-
- All formats also have a name, which is the only way to specify
- formats with no associated suffix. For example, for Dvips
- configuration files you can use '--format="dvips config"'. (The
- quotes are for the sake of the shell.)
-
- Here's the current list of recognized names and the associated
- suffixes. *Note Supported file formats::, for more information on
- each of these.
-
- The strings in parentheses are abbreviations recognized only by
- 'kpsewhich' (not the underlying library calls). They are provided
- when it would otherwise require an argument containing a space to
- specify the format, to simplify quoting of calls from shells.
-
- gf: gf
- pk: pk
- bitmap font (bitmapfont):
- tfm: .tfm
- afm: .afm
- base: .base
- bib: .bib
- bst: .bst
- cnf: .cnf
- ls-R: ls-R ls-r
- fmt: .fmt
- map: .map
- mem: .mem
- mf: .mf
- mfpool: .pool
- mft: .mft
- mp: .mp
- mppool: .pool
- MetaPost support (mpsupport):
- ocp: .ocp
- ofm: .ofm .tfm
- opl: .opl .pl
- otp: .otp
- ovf: .ovf .vf
- ovp: .ovp .vpl
- graphic/figure: .eps .epsi
- tex: .tex .sty .cls .fd .aux .bbl .def .clo .ldf
- TeX system documentation (doc):
- texpool: .pool
- TeX system sources (source): .dtx .ins
- PostScript header: .pro
- Troff fonts (trofffont):
- type1 fonts: .pfa .pfb
- vf: .vf
- dvips config (dvipsconfig):
- ist: .ist
- truetype fonts: .ttf .ttc .TTF .TTC .dfont
- type42 fonts: .t42 .T42
- web2c files (web2c):
- other text files (othertext):
- other binary files (otherbin):
- misc fonts (miscfont):
- web: .web .ch
- cweb: .w .web .ch
- enc files: .enc
- cmap files (cmap):
- subfont definition files: .sfd
- opentype fonts: .otf
- pdftex config (pdftexconfig):
- lig files: .lig
- texmfscripts:
- lua: .lua .luatex .luc .luctex .texlua .texluc .tlu
- font feature files: .fea
- cid maps: .cid .cidmap
- mlbib: .mlbib .bib
- mlbst: .mlbst .bst
- clua: .dll .so
- ris: .ris
- bltxml: .bltxml
-
- This option and '--path' are mutually exclusive.
-
-'--interactive'
- After processing the command line, read additional filenames to
- look up from standard input.
-
-'--mktex=FILETYPE'
-'--no-mktex=FILETYPE'
- Turn on or off the 'mktex' script associated with FILETYPE. Usual
- values for FILETYPE are 'pk', 'mf', 'tex', and 'tfm'. By default,
- all are off in Kpsewhich, even if they are enabled for TeX. This
- option implies setting '--must-exist'. *Note mktex scripts::.
-
-'--mode=STRING'
- Set the mode name to STRING; this also only affects 'gf' and 'pk'
- lookups. No default: any mode will be found. *Note mktex script
- arguments::.
-
-'--must-exist'
- Do everything possible to find the files, notably including
- searching the disk and running the 'mktex' scripts. By default,
- only the 'ls-R' database is checked, in the interest of efficiency.
-
-'--path=STRING'
- Search along the path STRING (colon-separated as usual), instead of
- guessing the search path from the filename. '//' and all the usual
- expansions are supported (*note Path expansion::). This option and
- '--format' are mutually exclusive. To output the complete
- directory expansion of a path, instead of doing a one-shot lookup,
- see '--expand-path' and '--show-path' in the following section.
-
-'--progname=NAME'
- Set the program name to NAME; default is 'kpsewhich'. This can
- affect the search paths via the '.PROGNAM' feature in configuration
- files (*note Config files::).
-
-'--subdir=STRING'
- Report only those matches whose directory part _ends_ with STRING
- (compared literally, except case is ignored on a case-insensitive
- operating system). For example, suppose there are two matches for
- a given name:
-
- kpsewhich foo.sty
- => /some/where/foo.sty
- /another/place/foo.sty
-
- Then we can narrow the result to what we are interested in with
- '--subdir':
-
- kpsewhich --subdir=where foo.sty
- => /some/where/foo.sty
-
- kpsewhich --subdir=place foo.sty
- => /another/place/foo.sty
-
- The string to match must be at the end of the directory part of the
- match, and it is taken literally, with no pattern matching:
-
- kpsewhich --subdir=another foo.sty
- =>
-
- The string to match may cross directory components:
-
- kpsewhich --subdir=some/where foo.sty
- => /some/where/foo.sty
-
- '--subdir' implies '--all'; if there is more than one match, they
- will all be reported (in our example, both 'where' and 'place' end
- in 'e'):
-
- kpsewhich --subdir=e
- => /some/where/foo.sty
- /another/place/foo.sty
-
- Because of the above rules, the presence of a leading '/' is
- important, since it "anchors" the match to a full component name:
-
- kpsewhich --subdir=/lace foo.sty
- =>
-
- However, a trailing '/' is immaterial (and ignored), since the
- match always takes place at the end of the directory part:
-
- kpsewhich --subdir=lace/ foo.sty
- => /another/place/foo.sty
-
- The purpose of these rules is to make it convenient to find results
- only within a particular area of the tree. For instance, a given
- script named 'foo.lua' might exist within both
- 'texmf-dist/scripts/pkg1/' and 'texmf-dist/scripts/pkg2/'. By
- specifying, say, '--subdir=/pkg1', you can be sure of getting the
- one you are interested in.
-
- We only match at the end because a site might happen to install TeX
- in '/some/coincidental/pkg1/path/', and we wouldn't want to match
- 'texmf-dist/scripts/pkg2/' that when searching for '/pkg1'.
-
-
-File: kpathsea.info, Node: Specially-recognized files, Next: Auxiliary tasks, Prev: Path searching options, Up: Invoking kpsewhich
-
-5.6.2 Specially-recognized files for 'kpsewhich'
-------------------------------------------------
-
-'kpsewhich' recognizes a few special filenames on the command line and
-defaults to using the 'known' file formats for them, merely to save the
-time and trouble of specifying the format. This is only a feature of
-'kpsewhich'; when using the Kpathsea library itself, none of these
-special filenames are recognized, and it's still up to the caller to
-specify the desired format.
-
- Here is the list of special filenames to 'kpsewhich', along with
-their corresponding format:
-
-'config.ps'
- 'dvips config'
-
-'dvipdfmx.cfg'
- 'other text files'
-
-'fmtutil.cnf'
- 'web2c files'
-
-'glyphlist.txt'
- 'map'
-
-'mktex.cnf'
- 'web2c files'
-
-'pdfglyphlist.txt'
- 'map'
-
-'pdftex.cfg'
- 'pdftex config' (although 'pdftex.cfg' is not used any more; look
- for the file 'pdftexconfig.tex' instead.)
-
-'texmf.cnf'
- 'cnf'
-
-'XDvi'
- 'other text files'
-
- A user-specified format will override the above defaults.
-
- Another useful configuration file in this regard is 'tcfmgr.map',
-found in 'texmf/texconfig/tcfmgr.map', which records various information
-about the above configuration files (among others).
-
-
-File: kpathsea.info, Node: Auxiliary tasks, Next: Standard options, Prev: Specially-recognized files, Up: Invoking kpsewhich
-
-5.6.3 Auxiliary tasks
----------------------
-
-Kpsewhich provides some features in addition to path lookup as such:
-
-'--debug=NUM'
- Set debugging options to NUM. *Note Debugging::.
-
-'--expand-braces=STRING'
- Output variable, tilde, and brace expansion of STRING, which is
- assumed to be a single path element. *Note Path expansion::.
-
-'--expand-path=STRING'
- Output the complete expansion of STRING, with each element
- separated by the usual path separator on the current system (';' on
- Windows, ':' otherwise). This may be useful to construct a custom
- search path for a format not otherwise supported. To retrieve the
- search path for a format that is already supported, see
- '--show-path'.
-
- Nonexistent directories are culled from the output:
-
- $ kpsewhich --expand-path '/tmp'
- => /tmp
- $ kpsewhich --expand-path '/nonesuch'
- =>
-
- For one-shot uses of an arbitrary (not built in to Kpathsea) path,
- see '--path' (*note Path searching options::).
-
-'--expand-var=STRING'
- Output the variable and tilde expansion of STRING. For example,
- with the usual 'texmf.cnf', 'kpsewhich --expand-var='$TEXMF''
- returns the TeX system hierarchy root(s). *Note Path expansion::.
- The specified STRING can contain anything, though, not just
- variable references. This calls 'kpse_var_expand' (*note
- Programming with config files::).
-
-'--help-formats'
- Output information about each supported format (*note Supported
- file formats::), including the names and abbreviations, variables
- looked for, and the original path.
-
-'--safe-in-name=NAME'
-'--safe-out-name=NAME'
- Exit successfully if NAME is safe to open for reading or writing,
- respectively, else unsuccessfully. No output is written. These
- tests take account of the related Kpathsea configuration settings
- (*note Calling sequence::).
-
-'--show-path=NAME'
- Show the path that would be used for file lookups of file type
- NAME. Either a filename extension ('pk', '.vf', etc.) or an
- integer can be used, just as with '--format', described in the
- previous section.
-
-'--var-brace-value=VARIABLE'
- Like '--var-value' (next), but also expands '{...}' constructs.
- (*note Brace expansion::). Thus, the value is assumed to possibly
- be several path elements, and '~' is expanded at the beginning of
- each. The path separator is changed to that of the current system
- in the expansion.
-
- Example: 'FOO='.;~' kpsewhich --var-brace-value=FOO' outputs (on a
- Unix-ish system) '.:/home/karl', supposing the latter is the
- current user's home directory. Note that the ';' in the source
- value, as commonly used in 'texmf.cnf', has changed to a ':', as
- the normal path separator on the current system. On a Windows-ish
- system, the ';' would remain.
-
-'--var-value=VARIABLE'
- Outputs the value of VARIABLE (a simple identifier like
- 'TEXMFDIST', with no '$' or other constructs), expanding '$' (*note
- Variable expansion::) and '~' (*note Tilde expansion::) constructs
- in the value. '~' expansion happens at the beginning of the
- overall value and at the beginning of a variable expansion, but not
- arbitrarily within the string. Braces are not expanded.
-
- Example: '--var-value=texmf_casefold_search' outputs (if the
- default is not changed) '1'.
-
- Example to contrast with '--var-brace-value': 'FOO='.;~' kpsewhich
- --var-value=FOO' outputs '.;~', i.e., the same as the input value,
- on all systems.
-
-
-File: kpathsea.info, Node: Standard options, Prev: Auxiliary tasks, Up: Invoking kpsewhich
-
-5.6.4 Standard options
-----------------------
-
-Kpsewhich accepts the standard GNU options:
-
- * '--help' prints a help message on standard output and exits
- successfully.
-
- * '--version' prints the Kpathsea version number and exits
- successfully.
-
-
-File: kpathsea.info, Node: TeX support, Next: Programming, Prev: Path searching, Up: Top
-
-6 TeX support
-*************
-
-Although the basic features in Kpathsea can be used for any type of path
-searching, it came about, as usual, with a specific application in mind:
-I wrote Kpathsea specifically for TeX system programs. I had been
-struggling with the programs I was using (Dvips, Xdvi, and TeX itself)
-having slightly different notions of how to specify paths; and debugging
-was painful, since no code was shared.
-
- Therefore, Kpathsea provides some TeX-specific formats and features.
-Indeed, many of the purportedly generic path searching features were
-provided because they seemed useful in that conTeXt (font lookup,
-particularly).
-
- Kpathsea provides a standard way to search for files of any of the
-supported file types; glyph fonts are a bit different than all the rest.
-Searches are based solely on names of files, not their contents--if a GF
-file is (mis)named 'cmr10.600pk', it will be found as a PK file.
-
-* Menu:
-
-* Supported file formats:: File types Kpathsea knows about.
-* File lookup:: Searching for most kinds of files.
-* Glyph lookup:: Searching for bitmap fonts.
-* Suppressing warnings:: Avoiding warnings via TEX_HUSH.
-* mktex scripts:: Generating files at runtime.
-
-
-File: kpathsea.info, Node: Supported file formats, Next: File lookup, Up: TeX support
-
-6.1 Supported file formats
-==========================
-
-Kpathsea has support for a number of file types. Each file type has a
-list of environment and config file variables that are checked to define
-the search path, and most have a default suffix that plays a role in
-finding files (see the next section). Some also define additional
-suffixes, and/or a program to be run to create missing files on the fly.
-
- Since environment variables containing periods, such as
-'TEXINPUTS.latex', are not allowed on some systems, Kpathsea looks for
-environment variables with an underscore, e.g., 'TEXINPUTS_latex' (*note
-Config files::).
-
- The following table lists the above information. You can also get
-the list by giving the '--help-formats' option to 'kpsewhich' (*note
-Auxiliary tasks::).
-
-'afm'
- (Adobe font metrics, *note (dvips)Metric files::) 'AFMFONTS';
- suffix '.afm'.
-
-'base'
- (Metafont memory dump, *note (web2c)Memory dumps::) 'MFBASES',
- 'TEXMFINI'; suffix '.base'.
-
-'bib'
- (BibTeX bibliography source, *note (web2c)bibtex invocation::)
- 'BIBINPUTS', 'TEXBIB'; suffix '.bib'.
-
-'bltxml'
- (BibLaTeXML bibliography files for Biber,
- <https://ctan.org/pkg/biber>) 'BLTXMLINPUTS' suffix '.bltxml'.
-
-'bst'
- (BibTeX style, *note Basic BibTeX style files: (web2c)Basic BibTeX
- style files.) 'BSTINPUTS'; suffix '.bst'.
-
-'clua'
- (dynamic libraries for Lua, <https://ctan.org/pkg/luatex>)
- 'CLUAINPUTS' suffixes '.dll' and '.so'.
-
-'cmap'
- (character map files) 'CMAPFONTS'; suffix '.cmap'.
-
-'cnf'
- (Runtime configuration files, *note Config files::) 'TEXMFCNF';
- suffix '.cnf'.
-
-'cweb'
- (CWEB input files) 'CWEBINPUTS'; suffixes '.w', '.web'; additional
- suffix '.ch'.
-
-'dvips config'
- (Dvips 'config.*' files, such as 'config.ps', *note (dvips)Config
- files::) 'TEXCONFIG'.
-
-'enc files'
- (encoding vectors) 'ENCFONTS'; suffix '.enc'.
-
-'fmt'
- (TeX memory dump, *note (web2c)Memory dumps::) 'TEXFORMATS',
- 'TEXMFINI'; suffix '.fmt'.
-
-'font cid map'
- (CJK mapping) 'FONTCIDMAPS' suffix '.cid'.
-
-'font feature files'
- (primarily for OpenType font features) 'FONTFEATURES' suffix
- '.fea'.
-
-'gf'
- (generic font bitmap, *note (dvips)Glyph files::) 'PROGRAMFONTS',
- 'GFFONTS', 'GLYPHFONTS', 'TEXFONTS'; suffix 'gf'.
-
-'graphic/figure'
- (Encapsulated PostScript figures, *note (dvips)PostScript
- figures::) 'TEXPICTS', 'TEXINPUTS'; additional suffixes: '.eps',
- '.epsi'.
-
-'ist'
- (makeindex style files) 'TEXINDEXSTYLE', 'INDEXSTYLE'; suffix
- '.ist'.
-
-'lig files'
- (ligature definition files) 'LIGFONTS'; suffix '.lig'.
-
-'ls-R'
- (Filename databases, *note Filename database::) 'TEXMFDBS'.
-
-'map'
- (Fontmaps, *note Fontmap::) 'TEXFONTMAPS'; suffix '.map'.
-
-'mem'
- (MetaPost memory dump, *note (web2c)Memory dumps::) 'MPMEMS',
- 'TEXMFINI'; suffix '.mem'.
-
-'MetaPost support'
- (MetaPost support files, used by DMP; *note (web2c)dmp
- invocation::) 'MPSUPPORT'.
-
-'mf'
- (Metafont source, *note (web2c)mf invocation::) 'MFINPUTS'; suffix
- '.mf'; dynamic creation program: 'mktexmf'.
-
-'mfpool'
- (Metafont program strings, *note (web2c)pooltype invocation::)
- 'MFPOOL', 'TEXMFINI'; suffix '.pool'.
-
-'mft'
- ('MFT' style file, *note (web2c)mft invocation::) 'MFTINPUTS';
- suffix '.mft'.
-
-'misc fonts'
- (font-related files that don't fit the other categories)
- 'MISCFONTS'
-
-'mlbib'
- (MlBibTeX bibliography source) 'MLBIBINPUTS', 'BIBINPUTS',
- 'TEXBIB'; suffixes '.mlbib', '.mlbib'.
-
-'mlbst'
- (MlBibTeX style) 'MLBSTINPUTS', 'BSTINPUTS'; suffixes '.mlbst',
- '.bst'.
-
-'mp'
- (MetaPost source, *note (web2c)mpost invocation::) 'MPINPUTS';
- suffix '.mp'.
-
-'mppool'
- (MetaPost program strings, *note (web2c)pooltype invocation::)
- 'MPPOOL', 'TEXMFINI'; suffix '.pool'.
-
-'ocp'
- (Omega compiled process files) 'OCPINPUTS';
- suffix '.ocp'; dynamic creation program: 'MakeOmegaOCP'.
-
-'ofm'
- (Omega font metrics) 'OFMFONTS', 'TEXFONTS';
- suffixes '.ofm', '.tfm'; dynamic creation program: 'MakeOmegaOFM'.
-
-'opentype fonts'
- (OpenType fonts) 'OPENTYPEFONTS'.
-
-'opl'
- (Omega property lists) 'OPLFONTS', 'TEXFONTS'; suffix '.opl'.
-
-'otp'
- (Omega translation process files) 'OTPINPUTS'; suffix '.otp'.
-
-'ovf'
- (Omega virtual fonts) 'OVFFONTS', 'TEXFONTS'; suffix '.ovf'.
-
-'ovp'
- (Omega virtual property lists) 'OVPFONTS', 'TEXFONTS'; suffix
- '.ovp'.
-
-'pdftex config'
- (PDFTeX-specific configuration files) 'PDFTEXCONFIG'.
-
-'pk'
- (packed bitmap fonts, *note (dvips)Glyph files::) 'PROGRAMFONTS'
- (PROGRAM being 'XDVI', etc.), 'PKFONTS', 'TEXPKS', 'GLYPHFONTS',
- 'TEXFONTS'; suffix 'pk'; dynamic creation program: 'mktexpk'.
-
-'PostScript header'
- (downloadable PostScript, *note (dvips)Header files::)
- 'TEXPSHEADERS', 'PSHEADERS'; additional suffix '.pro'.
-
-'ris'
- (RIS bibliography files, primarily for Biber,
- <https://ctan.org/pkg/biber>) 'RISINPUTS' suffix '.ris'.
-
-'subfont definition files'
- (subfont definition files) 'SFDFONTS' suffix '.sfd'.
-
-'tex'
- (TeX source, *note (web2c)tex invocation::) 'TEXINPUTS'; suffix
- '.tex'; additional suffixes: none, because such a list cannot be
- complete; dynamic creation program: 'mktextex'.
-
-'TeX system documentation'
- (Documentation files for the TeX system) 'TEXDOCS'.
-
-'TeX system sources'
- (Source files for the TeX system) 'TEXSOURCES'.
-
-'texmfscripts'
- (Architecture-independent executables distributed in the texmf
- trees) 'TEXMFSCRIPTS'.
-
-'texpool'
- (TeX program strings, *note (web2c)pooltype invocation::)
- 'TEXPOOL', 'TEXMFINI'; suffix '.pool'.
-
-'tfm'
- (TeX font metrics, *note (dvips)Metric files::) 'TFMFONTS',
- 'TEXFONTS'; suffix '.tfm'; dynamic creation program: 'mktextfm'.
-
-'Troff fonts'
- (Troff fonts, used by DMP; *note (web2c)DMP invocation::)
- 'TRFONTS'.
-
-'truetype fonts'
- (TrueType outline fonts) 'TTFONTS'; suffixes '.ttf' and '.TTF',
- '.ttc' and '.TTC', '.dfont'.
-
-'type1 fonts'
- (Type 1 PostScript outline fonts, *note (dvips)Glyph files::)
- 'T1FONTS', 'T1INPUTS', 'TEXPSHEADERS', 'DVIPSHEADERS'; suffixes
- '.pfa', '.pfb'.
-
-'type42 fonts'
- (Type 42 PostScript outline fonts) 'T42FONTS'.
-
-'vf'
- (virtual fonts, *note (dvips)Virtual fonts::) 'VFFONTS',
- 'TEXFONTS'; suffix '.vf'.
-
-'web'
- (WEB input files) 'WEBINPUTS'; suffix '.web'; additional suffix
- '.ch'.
-
-'web2c files'
- (files specific to the web2c implementation) 'WEB2C'.
-
- There are two special cases, because the paths and environment
-variables always depend on the name of the program: the variable name is
-constructed by converting the program name to upper case, and then
-appending 'INPUTS'. Assuming the program is called 'foo', this gives us
-the following table.
-
-'other text files'
- (text files used by 'foo') 'FOOINPUTS'.
-
-'other binary files'
- (binary files used by 'foo') 'FOOINPUTS'.
-
- If an environment variable by these names are set, the corresponding
-'texmf.cnf' definition won't be looked at (unless, as usual, the
-environment variable value has an extra ':'). *Note Default
-expansion::.
-
- For the font variables, the intent is that:
- * 'TEXFONTS' is the default for everything.
-
- * 'GLYPHFONTS' is the default for bitmap (or, more precisely,
- non-metric) files.
-
- * Each font format has a variable of its own.
-
- * Each program has its own font override path as well; e.g.,
- 'DVIPSFONTS' for Dvipsk. Again, this is for bitmaps, not metrics.
-
-
-File: kpathsea.info, Node: File lookup, Next: Glyph lookup, Prev: Supported file formats, Up: TeX support
-
-6.2 File lookup
-===============
-
-This section describes how Kpathsea searches for most files (bitmap font
-searches are the exception, as described in the next section).
-
- Here is the search strategy for a file NAME:
-
- 1. If the file format defines default suffixes, and the suffix of NAME
- name is not already a known suffix for that format, try the name
- with each default appended, and use alternative names found in the
- fontmaps if necessary. Example: given 'foo.bar', look for
- 'foo.bar.tex'.
-
- 2. Search for NAME, and if necessary for alternative names found in
- the fontmaps. Example: given 'foo.bar', we also look for
- 'foo.bar'.
-
- 3. If the file format defines a program to invoke to create missing
- files, run it (*note mktex scripts::).
-
- The order in which we search for "suffixed" name (item 1) or the
-"as-is" name (item 2) is controlled by the 'try_std_extension_first'
-configuration value. The default set in 'texmf.cnf' is true, since
-common suffixes are already recognized: 'babel.sty' will only look for
-'babel.sty', not 'babel.sty.tex', regardless of this setting.
-
- When the suffix is unknown (e.g., 'foo.bar'), both names are always
-tried; the difference is the order in which they are tried.
-
- 'try_std_extension_first' only affects names being looked up which
-*already* have an extension. A name without an extension (e.g., 'tex
-story') will always have an extension added first.
-
- This algorithm is implemented in the function 'kpathsea_find_file' in
-the source file 'kpathsea/tex-file.c'. You can watch it in action with
-the debugging options (*note Debugging::).
-
-
-File: kpathsea.info, Node: Glyph lookup, Next: Suppressing warnings, Prev: File lookup, Up: TeX support
-
-6.3 Glyph lookup
-================
-
-This section describes how Kpathsea searches for a bitmap font in GF or
-PK format (or either) given a font name (e.g., 'cmr10') and a resolution
-(e.g., 600).
-
- Here is an outline of the search strategy (details in the sections
-below) for a file NAME at resolution DPI. The search stops at the first
-successful lookup.
-
- 1. Look for an existing file NAME.DPIFORMAT in the specified
- format(s).
-
- 2. If NAME is an alias for a file F in the fontmap file
- 'texfonts.map', look for F.DPI.
-
- 3. Run an external program (typically named 'mktexpk') to generate the
- font (*note mktex scripts::)
-
- 4. Look for FALLBACK.DPI, where FALLBACK is some last-resort font
- (typically 'cmr10').
-
- This is implemented in 'kpathsea_find_glyph' in
-'kpathsea/tex-glyph.c'.
-
-* Menu:
-
-* Basic glyph lookup:: Features common to all glyph lookups.
-* Fontmap:: Aliases for fonts.
-* Fallback font:: Resolutions and fonts of last resort.
-
-
-File: kpathsea.info, Node: Basic glyph lookup, Next: Fontmap, Up: Glyph lookup
-
-6.3.1 Basic glyph lookup
-------------------------
-
-When Kpathsea looks for a bitmap font NAME at resolution DPI in a format
-FORMAT, it first checks each directory in the search path for a file
-'NAME.DPIFORMAT'; for example, 'cmr10.600pk'. Kpathsea looks for a PK
-file first, then a GF file.
-
- If that fails, Kpathsea looks for 'dpiDPI/NAME.FORMAT'; for example,
-'dpi600/cmr10.pk'. This is how fonts are typically stored on
-filesystems (such as DOS) that permit only three-character extensions.
-
- If that fails, Kpathsea looks for a font with a close-enough DPI.
-"Close enough" is defined by the macro 'KPSE_BITMAP_TOLERANCE' in
-'kpathsea/tex-glyph.h' to be 'DPI / 500 + 1'. This is slightly more
-than the 0.2% minimum allowed by the DVI standard
-(<CTAN:/dviware/driv-standard/level-0>).
-
-
-File: kpathsea.info, Node: Fontmap, Next: Fallback font, Prev: Basic glyph lookup, Up: Glyph lookup
-
-6.3.2 Fontmap
--------------
-
-If a bitmap font or metric file is not found with the original name (see
-the previous section), Kpathsea looks through any "fontmap" files for an
-"alias" for the original font name. These files are named
-'texfonts.map' and searched for along the 'TEXFONTMAPS'
-environment/config file variable. All 'texfonts.map' files that are
-found are read; earlier definitions override later ones.
-
- This feature is intended to help in two respects:
-
- 1. An alias name is limited in length only by available memory, not by
- your filesystem. Therefore, if you want to ask for 'Times-Roman'
- instead of 'ptmr', you can (you get 'ptmr8r').
-
- 2. A few fonts have historically had multiple names: specifically,
- LaTeX's "circle font" has variously been known as 'circle10',
- 'lcircle10', and 'lcirc10'. Aliases can make all the names
- equivalent, so that it no longer matters what the name of the
- installed file is; TeX documents will find their favorite name.
-
- The format of fontmap files is straightforward:
-
- * Comments start with the last '%' on a line and continue to the end
- of the line. (This provides for names that include a %,
- ill-advised as that may be.)
-
- * Blank lines are ignored.
-
- * Each nonblank line is broken up into a series of "words": a
- sequence of non-whitespace characters.
-
- * If the first word is 'include', the second word is used as a
- filename, and it is searched for and read.
-
- * Otherwise, the first word on each line is the true filename;
-
- * the second word is the alias;
-
- * subsequent words are ignored.
-
- If an alias has an extension, it matches only those files with that
-extension; otherwise, it matches anything with the same root, regardless
-of extension. For example, an alias 'foo.tfm' matches only when
-'foo.tfm' is being searched for; but an alias 'foo' matches 'foo.vf',
-'foo.600pk', etc.
-
- As an example, here is an excerpt from the 'texfonts.map' in the
-Web2c distribution. It makes the old and new names of the LaTeX circle
-fonts equivalent.
-
- circle10 lcircle10
- circle10 lcirc10
- lcircle10 circle10
- lcircle10 lcirc10
- lcirc10 circle10
- lcirc10 lcircle10
- ...
-
- Fontmaps are implemented in the file 'kpathsea/fontmap.c'. The
-Fontname distribution has much more information on font naming (*note
-(fontname)::).
-
-
-File: kpathsea.info, Node: Fallback font, Prev: Fontmap, Up: Glyph lookup
-
-6.3.3 Fallback font
--------------------
-
-If a bitmap font cannot be found or created at the requested size,
-Kpathsea looks for the font at a set of "fallback resolutions". You
-specify these resolutions as a colon-separated list (like search paths).
-Kpathsea looks first for a program-specific environment variable (e.g.,
-'DVIPSSIZES' for Dvipsk), then the environment variable 'TEXSIZES', then
-a default specified at compilation time (the Make variable
-'default_texsizes'). You can set this list to be empty if you prefer to
-find fonts at their stated size or not at all.
-
- Finally, if the font cannot be found even at the fallback
-resolutions, Kpathsea looks for a fallback font, typically 'cmr10'.
-Programs must enable this feature by calling 'kpathsea_init_prog' (*note
-Calling sequence::); the default is no fallback font.
-
-
-File: kpathsea.info, Node: Suppressing warnings, Next: mktex scripts, Prev: Glyph lookup, Up: TeX support
-
-6.4 Suppressing warnings
-========================
-
-Kpathsea provides a way to suppress selected usually-harmless warnings;
-this is useful at large sites where most users are not administrators,
-and thus the warnings are merely a source of confusion, not a help. To
-do this, you set the environment variable or configuration file value
-'TEX_HUSH' to a colon-separated list of values. Here are the
-possibilities:
-
-'all'
- Suppress everything possible.
-
-'checksum'
- Suppress mismatched font checksum warnings.
-
-'lostchar'
- Suppress warnings when a character is missing from a font that a
- DVI or VF file tries to typeset.
-
-'none'
- Don't suppress any warnings.
-
-'readable'
- Suppress warnings about attempts to access a file whose permissions
- render it unreadable.
-
-'special'
- Suppresses warnings about an unimplemented or unparsable '\special'
- command.
-
-'tex-hush.c' defines the function that checks the variable value. Each
-driver implements its own checks where appropriate.
-
-
-File: kpathsea.info, Node: mktex scripts, Prev: Suppressing warnings, Up: TeX support
-
-6.5 '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
-impossible.
-
- It is also useful for the TeX '.fmt' (and Metafont '.base' and
-Metapost '.mem' files, *note (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.
-
-* Menu:
-
-* config: mktex configuration.
-* names: mktex script names.
-* args: mktex script arguments.
-
-
-File: kpathsea.info, Node: mktex configuration, Next: mktex script names, Up: mktex scripts
-
-6.5.1 '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:
-
- --without-mktexfmt-default
- --without-mktexmf-default
- --without-mktexocp-default
- --without-mktexofm-default
- --without-mktexpk-default
- --without-mktextfm-default
- --with-mktextex-default
-
- 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
-generation scripts.
-
- 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 installed anywhere).
-
- 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.
-
-'appendonlydir'
- Tell 'mktexdir' to create directories append-only, i.e., set their
- sticky bit (*note (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.
-
-'dosnames'
- 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'.
-
-'fontmaps'
- 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:
- (fontname)Top.).
-
-'nomfdrivers'
- 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.
-
-'nomode'
- Omit the directory level for the mode name; this is fine as long as
- you generate fonts for only one mode.
-
-'stripsupplier'
- Omit the font supplier name directory level.
-
-'striptypeface'
- Omit the font typeface name directory level.
-
-'strip'
- Omit the font supplier and typeface name directory levels. This
- feature is deprecated in favour of 'stripsupplier' and
- 'striptypeface'.
-
-'varfonts'
- 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.
-
-'texmfvar'
- 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
-
-6.5.2 'mktex' script names
---------------------------
-
-The following table shows the default name of the script for each of the
-file types which support runtime generation.
-
-'mktexfmt'
- ('.fmt', '.base', '.mem') TeX/Metafont/MetaPost formats. This
- script is also named 'fmtutil', and reads 'fmtutil.cnf' for
- configuration information.
-
-'mktexmf'
- ('.mf') Metafont input files.
-
-'mkocp'
- ('.ocp') Omega compiled process files.
-
-'mkofm'
- ('.ofm') Omega font metric files.
-
-'mktexpk'
- ('pk') Glyph fonts.
-
-'mktextex'
- ('.tex') TeX input files (disabled by default).
-
-'mktextfm'
- ('.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
-problem.
-
- 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 value.
-
-
-File: kpathsea.info, Node: mktex script arguments, Prev: mktex script names, Up: mktex scripts
-
-6.5.3 '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:
-
-'--dpi NUM'
- Sets the resolution of the generated font to NUM.
-'--mfmode NAME'
- Sets the Metafont mode to NAME.
-'--bdpi NUM'
- Sets the "base dpi" for the font. This must match the mode being
- used.
-'--mag STRING'
- A "magstep" string suitable for the Metafont 'mag' variable. This
- must match the combination of BDPI and DPI being used.
-'--destdir STRING'
- A directory name. If the directory is absolute, it is used as-is.
- Otherwise, it is appended to the root destination directory set in
- the script.
-
-
-File: kpathsea.info, Node: Programming, Next: Reporting bugs, Prev: TeX support, Up: Top
-
-7 Programming
-*************
-
-This chapter is for programmers who wish to use Kpathsea. *Note
-Introduction::, for the conditions under which you may do so (in short,
-it is released under LGPLv2.1 or later).
-
-* Menu:
-
-* Overview: Programming overview. Introduction.
-* Calling sequence:: Specifics of what to call.
-* Program-specific files:: How to handle these.
-* Config: Programming with config files. Getting info from texmf.cnf.
-
-
-File: kpathsea.info, Node: Programming overview, Next: Calling sequence, Up: Programming
-
-7.1 Programming overview
-========================
-
-Aside from this manual, your best source of information is the source to
-the programs that use Kpathsea (*note Introduction::). First, Kpsewhich
-is a small utility program whose sole purpose is to exercise the main
-path-searching functionality. Of the drivers, Dviljk is probably the
-simplest full application program. Xdvik adds VF support and the
-complication of X resources. Dvipsk adds the complication of its own
-config files. Web2c is source code I also maintain, so it uses Kpathsea
-rather straightforwardly, but is of course complicated by the Web to C
-translation.
-
- When looking at these program sources, you should know that previous
-versions of the library had a different programming interface; the
-current interface supports re-entrancy. Historically, the library
-function names were prefixed with 'kpse_' instead of 'kpathsea_', and
-they did not need an instance variable as first argument. This change
-was made in 2009. The old functions will never disappear, and can
-reliably continue to be used when they suffice, as they do for the
-programs above. The main application using the re-entrant API is the
-MetaPost library used by MetaPost and LuaTeX.
-
- Beyond these examples, the '.h' files in the Kpathsea source describe
-the interfaces and functionality (and of course the '.c' files define
-the actual routines, which are the ultimate documentation).
-'pathsearch.h' declares the basic searching routine. 'tex-file.h' and
-'tex-glyph.h' define the interfaces for looking up particular kinds of
-files. In view of the way the headers depend on each other, it is
-recommended to use '#include <kpathsea/kpathsea.h>', which includes
-every Kpathsea header.
-
- If you want to include only specific headers, you should still
-consider including 'kpathsea/config.h' before including any other
-Kpathsea header, as it provides symbols used in the other headers. Note
-that 'kpathsea/config.h' includes 'kpathsea/c-auto.h', which is
-generated by Autoconf.
-
- The library provides no way for an external program to register new
-file types: 'tex-file.[ch]' must be modified to do this. For example,
-Kpathsea has support for looking up Dvips config files, even though no
-program other than Dvips will likely ever want to do so. I felt this
-was acceptable, since along with new file types should also come new
-defaults in 'texmf.cnf' (and its descendant 'paths.h'), since it's
-simplest for users if they can modify one configuration file for all
-kinds of paths.
-
- Kpathsea does not parse any formats itself; it barely opens any
-files. Its primary purpose is to return filenames. The GNU font
-utilities does contain libraries to read TFM, GF, and PK files, as do
-the programs above, of course.
-
-
-File: kpathsea.info, Node: Calling sequence, Next: Program-specific files, Prev: Programming overview, Up: Programming
-
-7.2 Calling sequence
-====================
-
-The typical way to use Kpathsea in your program goes something like
-this:
-
- 1. Call 'kpathsea_new' to create a new library instance. This
- variable must be passed as the first argument to all the following
- library functions. The rest of this manual will be using 'kpse' as
- a placeholder for the name of this variable.
-
- 2. Call 'kpathsea_set_program_name' with 'argv[0]' as the second
- argument; the third argument is a string or 'NULL'. The third
- argument is used by Kpathsea as the program name for the '.PROGRAM'
- feature of config files (*note Config files::). If the third
- argument is 'NULL', the value of the second argument is used. This
- function must be called before any other use of the Kpathsea
- library.
-
- 'kpathsea_set_program_name' always sets the variables
- 'kpse->invocation_name' and 'kpse->invocation_short_name'. These
- variables are used in the error message macros defined in
- 'kpathsea/lib.h'. It sets the variable 'kpse->program_name' to the
- program name it uses.
-
- It also initializes debugging options based on the environment
- variable 'KPATHSEA_DEBUG' (if that is set).
-
- Finally, it sets the environment variables 'SELFAUTOLOC',
- 'SELFAUTODIR' and 'SELFAUTOPARENT' to the location, parent and
- grandparent directory of the executable, removing '.' and '..' path
- elements and resolving symbolic links. These are used in the
- default configuration file to allow people to invoke TeX from
- anywhere. You can use 'kpsewhich --expand-var=\$SELFAUTOLOC',
- etc., to see the values.
-
- 3. Set debugging options. *Note Debugging::. If your program doesn't
- have a debugging option already, you can define one and set
- 'kpse->debug' to the number that the user supplies (as in Dviljk
- and Web2c), or you can just omit this altogether (people can always
- set 'KPATHSEA_DEBUG'). If you do have runtime debugging already,
- you need to merge Kpathsea's options with yours (as in Dvipsk and
- Xdvik).
-
- 4. If your program has its own configuration files that can define
- search paths, you should assign those paths to the 'client_path'
- member in the appropriate element of the 'kpse->format_info' array.
- (This array is indexed by file type; see 'tex-file.h'.) See
- 'resident.c' in Dvipsk for an example.
-
- 5. Call 'kpathsea_init_prog' (see 'proginit.c'). It's useful for the
- DVI drivers, at least, but for other programs it may be simpler to
- extract the parts of it that actually apply. This does not
- initialize any paths, it just looks for (and sets) certain
- environment variables and other random information. (A search path
- is always initialized at the first call to find a file of that
- type; this eliminates much useless work, e.g., initializing the
- BibTeX search paths in a DVI driver.)
-
- 6. The routine to actually find a file of type FORMAT is
- 'kpathsea_find_file'. You can call 'kpathsea_find_file' after
- doing only the first and second of the initialization steps
- above--Kpathsea automatically reads the 'texmf.cnf' generic config
- files, looks for environment variables, and does expansions at the
- first lookup.
-
- 7. To find PK and/or GF bitmap fonts, the routine is
- 'kpathsea_find_glyph', defined in 'tex-glyph.h'. This returns a
- structure in addition to the resultant filename, because fonts can
- be found in so many ways. See the documentation in the source.
-
- 8. To actually open a file, not just return a filename, call
- 'kpathsea_open_file'. This function takes the name to look up and
- a Kpathsea file format as arguments, and returns the usual 'FILE
- *'. It always assumes the file must exist, and thus will search
- the disk if necessary (unless the search path specified '!!',
- etc.). In other words, if you are looking up a VF or some other
- file that need not exist, don't use this.
-
- 9. TeX can write output files, via the '\openout' primitive; this
- opens a security hole vulnerable to Trojan horse attack: an
- unwitting user could run a TeX program that overwrites, say,
- '~/.rhosts'. Analogous security holes exist for many other
- programs. To alleviate this, there is a configuration variable
- 'openout_any', which selects one of three levels of security. When
- it is set to 'a' (for "any"), no restrictions are imposed. When it
- is set to 'r' (for "restricted"), filenames beginning with '.' are
- disallowed (except '.tex' because LaTeX needs it). When it is set
- to 'p' (for "paranoid") additional restrictions are imposed: an
- absolute filename must refer to a file in (a subdirectory) of
- 'TEXMFOUTPUT', and any attempt to go up a directory level is
- forbidden (that is, paths may not contain a '..' component). The
- paranoid setting is the default. (For backwards compatibility, 'y'
- and '1' are synonyms of 'a', while 'n' and '0' are synonyms for
- 'r'.) The function 'kpathsea_out_name_ok', with a filename as
- second argument, returns 'true' if that filename is acceptable to
- be opend for output or 'false' otherwise.
-
- 10. Similarly, the function 'kpathsea_in_name_ok', with a filename as
- second argument, returns 'true' if that filename is acceptable to
- be opend for input or 'false' otherwise, depending on the value of
- the configuration variable 'openin_any' (with 'a' as default).
-
- 11. To close the kpathsea library instance you are using, call
- 'kpathsea_finish'. This function closes any open log files and
- frees the memory used by the instance.
-
- Kpathsea also provides many utility routines. Some are generic: hash
-tables, memory allocation, string concatenation and copying, string
-lists, reading input lines of arbitrary length, etc. Others are
-filename-related: default path, tilde, and variable expansion, 'stat'
-calls, etc. (Perhaps someday I'll move the former to a separate
-library.)
-
- The 'c-*.h' header files can also help your program adapt to many
-different systems. You will almost certainly want to use Autoconf and
-probably Automake for configuring and building your software if you use
-Kpathsea; I strongly recommend using Autoconf and Automake regardless.
-They are available from <https://gnu.org/software>.
-
-
-File: kpathsea.info, Node: Program-specific files, Next: Programming with config files, Prev: Calling sequence, Up: Programming
-
-7.3 Program-specific files
-==========================
-
-Many programs will need to find some configuration files. Kpathsea
-contains some support to make it easy to place them in their own
-directories. The Standard TeX directory structure (*note Introduction:
-(tds)Top.), specifies that such files should go into a subdirectory
-named after the program, like 'texmf/ttf2pk'.
-
- Two formats, 'kpse_program_text_format' and
-'kpse_program_binary_format', use '.:$TEXMF/PROGRAM//' as their
-compiled-in search path. To override this default, you can use the
-variable 'PROGRAMINPUTS' in the environment and/or 'texmf.cnf'. That is
-to say, the name of the variable is constructed by converting the name
-of the program to upper case, and appending 'INPUTS'.
-
- The only difference between these two formats is whether
-'kpathsea_open_file' will open the files it finds in text or binary
-mode.
-
-
-File: kpathsea.info, Node: Programming with config files, Prev: Program-specific files, Up: Programming
-
-7.4 Programming with config files
-=================================
-
-You can (and probably should) use the same 'texmf.cnf' configuration
-file that Kpathsea uses for your program. This helps installers by
-keeping all configuration in one place.
-
- To retrieve a value for a configuration variable VAR, the best way is
-to call 'kpathsea_var_value' on the string 'VAR'. This will look first
-for an environment variable VAR, then a config file value. The result
-will be the value found or 'NULL'. This function is declared in
-'kpathsea/variable.h'. For an example, see the 'shell_escape' code in
-'web2c/lib/texmfmp.c'.
-
- The routine to do full variable and tilde expansion of an arbitrary
-string in the context of a search path (as opposed to simply retrieving
-a value) is 'kpathsea_var_expand', also declared in
-'kpathsea/variable.h'. However, it's generally only necessary to set
-the search path structure components as explained in the previous
-section instead of using this directly. Because of its usage with any
-input string, undefined '$FOO' constructs in the argument to
-'kpathsea_var_expand' are returned literally ('"$FOO"'), while undefined
-'${FOO}' constructs are expanded to the empty string.
-
- If for some reason you want to retrieve a value _only_ from a config
-file, not automatically looking for a corresponding environment
-variable, call 'kpathsea_cnf_get' (declared in 'kpathsea/cnf.h') with
-the string VAR.
-
- No initialization calls are needed.
-
-
-File: kpathsea.info, Node: Reporting bugs, Next: Index, Prev: Programming, Up: Top
-
-8 Reporting bugs
-****************
-
-If you have problems or suggestions, please report them to
-<tex-k@tug.org> using the bug checklist below.
-
- Please report bugs in the documentation; not only factual errors or
-inconsistent behavior, but unclear or incomplete explanations, typos,
-wrong fonts, ...
-
-* Menu:
-
-* Bug checklist:: What to include in a good bug report.
-* Mailing lists:: Joining the bugs or announcements mailing lists.
-* Debugging:: Analyzing runtime problems.
-* Logging:: Recording searches.
-* Common problems:: When things go wrong.
-
-
-File: kpathsea.info, Node: Bug checklist, Next: Mailing lists, Up: Reporting bugs
-
-8.1 Bug checklist
-=================
-
-Before reporting a bug, please check below to be sure it isn't already
-known (*note Common problems::).
-
- Bug reports should be sent via electronic mail to <tex-k@tug.org>.
-
- The general principle is that a good bug report includes all the
-information necessary for reproduction. Therefore, to enable
-investigation, your report should include the following:
-
- * The version number(s) of the program(s) involved, and of Kpathsea
- itself. You can get the former by giving a sole option '--version'
- to the program, and the latter by running 'kpsewhich --version'.
- The 'NEWS' and 'ChangeLog' files also contain the version number.
-
- * The hardware, operating system (including version), compiler, and
- 'make' program you are using (the output of 'uname -a' is a start
- on the first two, though incomplete).
-
- * Any options you gave to 'configure'. This is recorded in the
- 'config.status' files.
-
- If you are reporting a bug in 'configure' itself, it's probably
- system-dependent, and it will be unlikely the maintainers can do
- anything useful if you merely report that thus-and-such is broken.
- Therefore, you need to do some additional work: for some bugs, you
- can look in the file 'config.log' where the test that failed should
- appear, along with the compiler invocation and source program in
- question. You can then compile it yourself by hand, and discover
- why the test failed. Other 'configure' bugs do not involve the
- compiler; in that case, the only recourse is to inspect the
- 'configure' shell script itself, or the Autoconf macros that
- generated 'configure'.
-
- * The log of all debugging output, if the bug is in path searching.
- You can get this by setting the environment variable
- 'KPATHSEA_DEBUG' to '-1' before running the program. Please look
- at the log yourself to make sure the behavior is really a bug
- before reporting it; perhaps "old" environment variable settings
- are causing files not to be found, for example.
-
- * The contents of any input files necessary to reproduce the bug.
- For bugs in DVI-reading programs, for example, this generally means
- a DVI file (and any EPS or other files it uses)--TeX source files
- are helpful, but the DVI file is required, because that's the
- actual program input.
-
- * If you are sending a patch (do so if you can!), please do so in the
- form of a context diff ('diff -c') against the original
- distribution source. Any other form of diff is either not as
- complete or harder for me to understand. Please also include a
- 'ChangeLog' entry.
-
- * If the bug involved is an actual crash (i.e., core dump), it is
- easy and useful to include a stack trace from a debugger (I
- recommend the GNU debugger GDB (<https://gnu.org/software/gdb>).
- If the cause is apparent (a 'NULL' value being dereferenced, for
- example), please send the details along. If the program involved
- is TeX or Metafont, and the crash is happening at apparently-sound
- code, however, the bug may well be in the compiler, rather than in
- the program or the library (*note TeX or Metafont failing: TeX or
- Metafont failing.).
-
- * Any additional information that will be helpful in reproducing,
- diagnosing, or fixing the bug.
-
-
-File: kpathsea.info, Node: Mailing lists, Next: Debugging, Prev: Bug checklist, Up: Reporting bugs
-
-8.2 Mailing lists
-=================
-
-Web2c and Kpathsea in general are discussed on the mailing list
-<tex-k@tug.org>. You can subscribe and peruse the archives on the web
-<https://lists.tug.org/tex-k>.
-
- You do not need to join to submit a report, nor will it affect
-whether you get a response. Be aware that large data files are
-sometimes included in bug reports. If this is a problem for you, do not
-join the list.
-
- If you are looking for general TeX help, such as how to install a
-full TeX system or how to use LaTeX, please see
-<https://tug.org/begin.html>.
-
-
-File: kpathsea.info, Node: Debugging, Next: Logging, Prev: Mailing lists, Up: Reporting bugs
-
-8.3 Debugging
-=============
-
-Kpathsea provides a number of runtime debugging options, detailed below
-by their names and corresponding numeric values. When the files you
-expect aren't being found, the thing to do is enable these options and
-examine the output.
-
- You can set these with some runtime argument (e.g., '-d') to the
-program; in that case, you should use the numeric values described in
-the program's documentation (which, for Dvipsk and Xdvik, are different
-than those below). It's best to give the '-d' (or whatever) option
-first, for maximal output. Dvipsk and Xdvik have additional
-program-specific debugging options as well.
-
- You can also set the environment variable 'KPATHSEA_DEBUG'; in this
-case, you should use the numbers below. If you run the program under a
-debugger and set the instance variable 'kpse->debug', also use the
-numbers below.
-
- In any case, by far the simplest value to use is '-1', which will
-turn on all debugging output. This is usually better than guessing
-which particular values will yield the output you need.
-
- Debugging output always goes to standard error, so you can redirect
-it easily. For example, in Bourne-compatible shells:
- dvips -d -1 ... 2>/tmp/debug
-
- It is sometimes helpful to run the standalone Kpsewhich utility
-(*note Invoking kpsewhich::), instead of the original program.
-
- In any case, you cannot use the names below; you must always use
-somebody's numbers. (Sorry.) To set more than one option, just sum the
-corresponding numbers.
-
-'KPSE_DEBUG_STAT (1)'
- Report 'stat'(2) calls. This is useful for verifying that your
- directory structure is not forcing Kpathsea to do many additional
- file tests (*note Slow path searching::, and *note Subdirectory
- expansion::). If you are using an up-to-date 'ls-R' database
- (*note Filename database::), this should produce no output unless a
- nonexistent file that must exist is searched for.
-
-'KPSE_DEBUG_HASH (2)'
- Report lookups in all hash tables: 'ls-R' and 'aliases' (*note
- Filename database::); font aliases (*note Fontmap::); and config
- file values (*note Config files::). Useful when expected values
- are not being found, e.g.., file searches are looking at the disk
- instead of using 'ls-R'.
-
-'KPSE_DEBUG_FOPEN (4)'
- Report file openings and closings. Especially useful when your
- system's file table is full, for seeing which files have been
- opened but never closed. In case you want to set breakpoints in a
- debugger: this works by redefining 'fopen' ('fclose') to be
- 'kpse_fopen_trace' ('kpse_fclose_trace').
-
-'KPSE_DEBUG_PATHS (8)'
- Report general path information for each file type Kpathsea is
- asked to search. This is useful when you are trying to track down
- how a particular path got defined--from 'texmf.cnf', 'config.ps',
- an environment variable, the compile-time default, etc. This is
- the contents of the 'kpse_format_info_type' structure defined in
- 'tex-file.h'.
-
-'KPSE_DEBUG_EXPAND (16)'
- Report the directory list corresponding to each path element
- Kpathsea searches. This is only relevant when Kpathsea searches
- the disk, since 'ls-R' searches don't look through directory lists
- in this way.
-
-'KPSE_DEBUG_SEARCH (32)'
- Report on each file search: the name of the file searched for, the
- path searched in, whether or not the file must exist (when drivers
- search for 'cmr10.vf', it need not exist), and whether or not we
- are collecting all occurrences of the file in the path (as with,
- e.g., 'texmf.cnf' and 'texfonts.map'), or just the first (as with
- most lookups). This can help you correlate what Kpathsea is doing
- with what is in your input file.
-
-'KPSE_DEBUG_VARS (64)'
- Report the value of each variable Kpathsea looks up. This is
- useful for verifying that variables do indeed obtain their correct
- values.
-
-'GSFTOPK_DEBUG (128)'
- Activates debugging printout specific to 'gsftopk' program.
-
-'MAKETEX_DEBUG (512)'
- If you use the optional 'mktex' programs instead of the traditional
- shell scripts, this will report the name of the site file
- ('mktex.cnf' by default) which is read, directories created by
- 'mktexdir', the full path of the 'ls-R' database built by
- 'mktexlsr', font map searches, 'MT_FEATURES' in effect, parameters
- from 'mktexnam', filenames added by 'mktexupd', and some subsidiary
- commands run by the programs.
-
-'MAKETEX_FINE_DEBUG (1024)'
- When the optional 'mktex' programs are used, this will print
- additional debugging info from functions internal to these
- programs.
-
- Debugging output from Kpathsea is always written to standard error,
-and begins with the string 'kdebug:'. (Except for hash table buckets,
-which just start with the number, but you can only get that output
-running under a debugger. See comments at the 'hash_summary_only'
-variable in 'kpathsea/db.c'.)
-
-
-File: kpathsea.info, Node: Logging, Next: Common problems, Prev: Debugging, Up: Reporting bugs
-
-8.4 Logging
-===========
-
-Kpathsea can record the time and filename found for each successful
-search. This may be useful in finding good candidates for deletion when
-your filesystem is full, or in discovering usage patterns at your site.
-
- To do this, define the environment or config file variable
-'TEXMFLOG'. The value is the name of the file to append the information
-to. The file is created if it doesn't exist, and appended to if it
-does.
-
- Each successful search turns into one line in the log file: two words
-separated by a space. The first word is the time of the search, as the
-integer number of seconds since "the epoch", i.e., UTC midnight 1
-January 1970 (more precisely, the result of the 'time' system call).
-The second word is the filename.
-
- For example, after 'setenv TEXMFLOG /tmp/log', running Dvips on
-'story.dvi' appends the following lines:
-
- 774455887 /usr/local/share/texmf/dvips/config.ps
- 774455887 /usr/local/share/texmf/dvips/psfonts.map
- 774455888 /usr/local/share/texmf/dvips/texc.pro
- 774455888 /usr/local/share/texmf/fonts/pk/ljfour/public/cm/cmbx10.600pk
- 774455889 /usr/local/share/texmf/fonts/pk/ljfour/public/cm/cmsl10.600pk
- 774455889 /usr/local/share/texmf/fonts/pk/ljfour/public/cm/cmr10.600pk
- 774455889 /usr/local/share/texmf/dvips/texc.pro
-
-Only filenames that are absolute are recorded, to preserve some
-semblance of privacy.
-
- In addition to this Kpathsea-specific logging, 'pdftex' provides an
-option '-recorder' to write the names of all files accessed during a run
-to the file 'BASEFILE.fls'.
-
- Finally, most systems provide a general tool to output each system
-call, thus including opening and closing files. It might be named
-'strace', 'truss', 'struss', or something else.
-
-
-File: kpathsea.info, Node: Common problems, Prev: Logging, Up: Reporting bugs
-
-8.5 Common problems
-===================
-
-Here are some common problems with configuration, compilation, linking,
-execution, ...
-
-* Menu:
-
-* Unable to find files:: If your program can't find fonts (or whatever).
-* Slow path searching:: If it takes forever to find anything.
-* Unable to generate fonts:: If mktexpk fails.
-* TeX or Metafont failing:: Likely compiler bugs.
-
-
-File: kpathsea.info, Node: Unable to find files, Next: Slow path searching, Up: Common problems
-
-8.5.1 Unable to find files
---------------------------
-
-If a program complains it cannot find fonts (or other input files), any
-of several things might be wrong. In any case, you may find the
-debugging options helpful. *Note Debugging::.
-
- * Perhaps you simply haven't installed all the necessary files; the
- basic fonts and input files are distributed separately from the
- programs. *Note unixtex.ftp::.
-
- * You have (perhaps unknowingly) told Kpathsea to use search paths
- that don't reflect where the files actually are. One common cause
- is having environment variables set from a previous installation,
- thus overriding what you carefully set in 'texmf.cnf' (*note
- Supported file formats::). System '/etc/profile' or other files
- such may be the culprit.
-
- * Your files reside in a directory that is only pointed to via a
- symbolic link, in a leaf directory and is not listed in 'ls-R'.
-
- Unfortunately, Kpathsea's subdirectory searching has an
- irremediable deficiency: If a directory D being searched for
- subdirectories contains plain files and symbolic links to other
- directories, but no true subdirectories, D will be considered a
- leaf directory, i.e., the symbolic links will not be followed.
- *Note Subdirectory expansion::.
-
- You can work around this problem by creating an empty dummy
- subdirectory in D. Then D will no longer be a leaf, and the
- symlinks will be followed.
-
- The directory immediately followed by the '//' in the path
- specification, however, is always searched for subdirectories, even
- if it is a leaf. Presumably you would not have asked for the
- directory to be searched for subdirectories if you didn't want it
- to be.
-
- * If the fonts (or whatever) don't already exist, 'mktexpk' (or
- 'mktexmf' or 'mktextfm') will try to create them. If these rather
- complicated shell scripts fail, you'll eventually get an error
- message saying something like 'Can't find font FONTNAME'. The best
- solution is to fix (or at least report) the bug in 'mktexpk'; the
- workaround is to generate the necessary fonts by hand with
- Metafont, or to grab them from a CTAN site (*note unixtex.ftp::).
-
- * There is a bug in the library. *Note Reporting bugs::.
-
-
-File: kpathsea.info, Node: Slow path searching, Next: Unable to generate fonts, Prev: Unable to find files, Up: Common problems
-
-8.5.2 Slow path searching
--------------------------
-
-If your program takes an excessively long time to find fonts or other
-input files, but does eventually succeed, here are some possible
-culprits:
-
- * Most likely, you just have a lot of directories to search, and that
- takes a noticeable time. The solution is to create and maintain a
- separate 'ls-R' file that lists all the files in your main TeX
- hierarchy. *Note Filename database::. Kpathsea always uses 'ls-R'
- if it's present; there's no need to recompile or reconfigure any of
- the programs.
-
- * Your recursively-searched directories (e.g.,
- '/usr/local/share/texmf/fonts//'), contain a mixture of files and
- directories. This prevents Kpathsea from using a useful
- optimization (*note Subdirectory expansion::).
-
- It is best to have only directories (and perhaps a 'README') in the
- upper levels of the directory structure, and it's very important to
- have _only_ files, and no subdirectories, in the leaf directories
- where the dozens of TFM, PK, or whatever files reside.
-
- In any case, you may find the debugging options helpful in
-determining precisely when the disk or network is being pounded. *Note
-Debugging::.
-
-
-File: kpathsea.info, Node: Unable to generate fonts, Next: TeX or Metafont failing, Prev: Slow path searching, Up: Common problems
-
-8.5.3 Unable to generate fonts
-------------------------------
-
-Metafont outputs fonts in bitmap format, tuned for a particular device
-at a particular resolution, in order to allow for the highest-possible
-quality of output. Some DVI-to-whatever programs, such as Dvips, try to
-generate these on the fly when they are needed, but this generation may
-fail in several cases.
-
- If 'mktexpk' runs, but fails with this error:
- mktexpk: Can't guess mode for NNN dpi devices.
- mktexpk: Use a config file to specify the mode, or update me.
- you need to ensure the resolution and mode match; just specifying the
-resolution, as in '-D 360', is not enough.
-
- You can specify the mode name with the '-mode' option on the Dvips
-command line, or in a Dvips configuration file (*note (dvips)Config
-files::), such as 'config.ps' in your document directory, '~/.dvipsrc'
-in your home directory, or in a system directory (again named
-'config.ps'). (Other drivers use other files, naturally.)
-
- For example, if you need 360dpi fonts, you could include this in a
-configuration file:
- D 360
- M lqmed
-
- If Metafont runs, but generates fonts at the wrong resolution or for
-the wrong device, most likely 'mktexpk''s built-in guess for the mode is
-wrong, and you should override it as above.
-
- See <https://ctan.org/pkg/modes> for a list of resolutions and mode
-names for most devices (additional submissions are welcome).
-
- If Metafont runs but generates fonts at a resolution of 2602dpi (and
-prints out the name of each character as well as just a character
-number, and maybe tries to display the characters), then your Metafont
-base file probably hasn't been made properly. (It's using the default
-'proof' mode, instead of an actual device mode.) To make a proper
-'plain.base', assuming the local mode definitions are contained in a
-file 'modes.mf', run the following command (assuming Unix):
-
- inimf "plain; input modes; dump"
-
-Then copy the 'plain.base' file from the current directory to where the
-base files are stored on your system ('/usr/local/share/texmf/web2c' by
-default), and make a link (either hard or soft) from 'plain.base' to
-'mf.base' in that directory. *Note (web2c)inimf invocation::.
-
- If 'mf' is a command not found at all by 'mktexpk', then you need to
-install Metafont (*note unixtex.ftp::).
-
-
-File: kpathsea.info, Node: TeX or Metafont failing, Prev: Unable to generate fonts, Up: Common problems
-
-8.5.4 TeX or Metafont failing
------------------------------
-
-If TeX or Metafont get a segmentation fault or otherwise fail while
-running a normal input file, the problem is usually a compiler bug
-(unlikely as that may sound). Even if the trip and trap tests are
-passed, problems may lurk. Optimization occasionally causes trouble in
-programs other than TeX and Metafont themselves, too.
-
- For a workaround, if you enabled any optimization flags, it's best to
-omit optimization entirely. In any case, the way to find the facts is
-to run the program under the debugger and see where it's failing.
-
- Also, if you have trouble with a system C compiler, I advise trying
-the GNU C compiler. And vice versa, unfortunately; but in that case I
-also recommend reporting a bug to the GCC mailing list; see *note
-(gcc)Bugs::.
-
- To report compiler bugs effectively requires perseverance and
-perspicacity: you must find the miscompiled line, and that usually
-involves delving backwards in time from the point of error, checking
-through TeX's (or whatever program's) data structures. Good luck.
-
-
-File: kpathsea.info, Node: Index, Prev: Reporting bugs, Up: Top
-
-Index
-*****
-
-
-* Menu:
-
-* !! and casefolding: Casefolding examples.
- (line 57)
-* !! in path specifications: ls-R. (line 57)
-* !! in 'TEXMFDBS': ls-R. (line 11)
-* $ expansion: Variable expansion. (line 6)
-* --all: Path searching options.
- (line 12)
-* --casefold-search: Path searching options.
- (line 19)
-* --cnf-line: Path searching options.
- (line 28)
-* '--cnf-line', source for path: Path sources. (line 9)
-* --color=tty: ls-R. (line 25)
-* --debug=NUM: Auxiliary tasks. (line 9)
-* --dpi=NUM: Path searching options.
- (line 49)
-* --engine=NAME: Path searching options.
- (line 53)
-* --expand-braces=STRING: Auxiliary tasks. (line 12)
-* --expand-path=STRING: Auxiliary tasks. (line 16)
-* --expand-var=STRING: Auxiliary tasks. (line 34)
-* --format=NAME: Path searching options.
- (line 69)
-* --help: Standard options. (line 8)
-* --help-formats: Auxiliary tasks. (line 42)
-* --interactive: Path searching options.
- (line 151)
-* --mktex=FILETYPE: Path searching options.
- (line 156)
-* --mode=STRING: Path searching options.
- (line 162)
-* --must-exist: Path searching options.
- (line 167)
-* --no-casefold-search: Path searching options.
- (line 19)
-* --no-mktex=FILETYPE: Path searching options.
- (line 156)
-* --path=STRING: Path searching options.
- (line 172)
-* --progname=NAME: Path searching options.
- (line 180)
-* --safe-in-name=NAME: Auxiliary tasks. (line 48)
-* --safe-out-name=NAME: Auxiliary tasks. (line 48)
-* --show-path=NAME: Auxiliary tasks. (line 54)
-* --subdir=STRING: Path searching options.
- (line 185)
-* --var-brace-value=VARIABLE: Auxiliary tasks. (line 60)
-* --var-value=VARIABLE: Auxiliary tasks. (line 74)
-* --version: Standard options. (line 11)
-* --with-mktextex-default: mktex configuration. (line 12)
-* --without-mktexfmt-default: mktex configuration. (line 12)
-* --without-mktexmf-default: mktex configuration. (line 12)
-* --without-mktexocp-default: mktex configuration. (line 12)
-* --without-mktexofm-default: mktex configuration. (line 12)
-* --without-mktexpk-default: mktex configuration. (line 12)
-* --without-mktextfm-default: mktex configuration. (line 12)
-* -1 debugging value: Debugging. (line 23)
-* -A option to 'ls': ls-R. (line 39)
-* -D NUM: Path searching options.
- (line 49)
-* -iname, find predicate: Casefolding examples.
- (line 78)
-* -L option to 'ls': ls-R. (line 44)
-* . directories, ignored: ls-R. (line 39)
-* . files: ls-R. (line 39)
-* .2602gf: Unable to generate fonts.
- (line 36)
-* .afm: Supported file formats.
- (line 22)
-* .base: Supported file formats.
- (line 26)
-* .bib: Supported file formats.
- (line 30)
-* .bltxml: Supported file formats.
- (line 34)
-* .bst: Supported file formats.
- (line 38)
-* .cid: Supported file formats.
- (line 68)
-* .cmap: Supported file formats.
- (line 46)
-* .cnf: Supported file formats.
- (line 49)
-* .dll: Supported file formats.
- (line 42)
-* .enc: Supported file formats.
- (line 61)
-* .eps: Supported file formats.
- (line 79)
-* .epsi: Supported file formats.
- (line 79)
-* .fea: Supported file formats.
- (line 71)
-* .fmt: Supported file formats.
- (line 64)
-* .ist: Supported file formats.
- (line 84)
-* .lig: Supported file formats.
- (line 88)
-* .map: Supported file formats.
- (line 94)
-* .mem: Supported file formats.
- (line 97)
-* .mf: Supported file formats.
- (line 105)
-* .mft: Supported file formats.
- (line 113)
-* .mlbib: Supported file formats.
- (line 121)
-* .mlbst: Supported file formats.
- (line 125)
-* .mp: Supported file formats.
- (line 129)
-* .ocp: Supported file formats.
- (line 137)
-* .ofm: Supported file formats.
- (line 141)
-* .opl: Supported file formats.
- (line 148)
-* .otp: Supported file formats.
- (line 151)
-* .ovf: Supported file formats.
- (line 154)
-* .ovp: Supported file formats.
- (line 157)
-* .pfa: Supported file formats.
- (line 211)
-* .pfb: Supported file formats.
- (line 211)
-* .pk: Supported file formats.
- (line 164)
-* .pool: Supported file formats.
- (line 109)
-* .pool <1>: Supported file formats.
- (line 133)
-* .pool <2>: Supported file formats.
- (line 195)
-* .pro: Supported file formats.
- (line 169)
-* .PROGNAME qualifier in 'texmf.cnf': Config files. (line 50)
-* .rhosts, writable by TeX: Security. (line 10)
-* .ris: Supported file formats.
- (line 173)
-* .sfd: Supported file formats.
- (line 177)
-* .so: Supported file formats.
- (line 42)
-* .tex: Supported file formats.
- (line 180)
-* .tex file, included in 'ls-R': ls-R. (line 39)
-* .tfm: Supported file formats.
- (line 199)
-* .ttc: Supported file formats.
- (line 207)
-* .ttf: Supported file formats.
- (line 207)
-* .vf: Supported file formats.
- (line 219)
-* .w: Supported file formats.
- (line 53)
-* .web: Supported file formats.
- (line 53)
-* .web <1>: Supported file formats.
- (line 223)
-* / may not be /: Searching overview. (line 13)
-* /, trailing in home directory: Tilde expansion. (line 19)
-* //: Subdirectory expansion.
- (line 6)
-* /etc/profile: Unable to find files.
- (line 14)
-* /etc/profile and aliases: ls-R. (line 25)
-* /var/tmp/texfonts: mktex configuration. (line 113)
-* 2602gf: Unable to generate fonts.
- (line 36)
-* 8.3 filenames, using: mktex configuration. (line 68)
-* : may not be :: Searching overview. (line 13)
-* :: expansion: Default expansion. (line 6)
-* ; translated to ':' in 'texmf.cnf': Config files. (line 66)
-* = omitted in 'texmf.cnf' and misparsing: Config files. (line 93)
-* \, line continuation in 'texmf.cnf': Config files. (line 37)
-* \openin: Searching overview. (line 31)
-* \special, suppressing warnings about: Suppressing warnings.
- (line 31)
-* { expansion: Brace expansion. (line 6)
-* ~ expansion: Tilde expansion. (line 6)
-* absolute filenames: Searching overview. (line 58)
-* access system call: Casefolding examples.
- (line 86)
-* access warnings: Searching overview. (line 63)
-* AFMFONTS: Supported file formats.
- (line 22)
-* aliases for fonts: Fontmap. (line 6)
-* aliases, for filenames: Filename aliases. (line 6)
-* all: Suppressing warnings.
- (line 13)
-* all matches, finding: Path searching options.
- (line 12)
-* alphabetical order, not: Subdirectory expansion.
- (line 6)
-* announcement mailing list: Mailing lists. (line 6)
-* API, re-entrant: Programming overview.
- (line 16)
-* append-only directories and 'mktexpk': Security. (line 36)
-* appendonlydir: mktex configuration. (line 60)
-* Apple filesystem, case-insensitive: Casefolding rationale.
- (line 6)
-* arguments to 'mktex': mktex script arguments.
- (line 6)
-* argv[0]: Calling sequence. (line 14)
-* autoconf, recommended: Calling sequence. (line 117)
-* automounter, and 'ls-R': ls-R. (line 46)
-* auxiliary tasks: Auxiliary tasks. (line 6)
-* Bach, Johann Sebastian: Default expansion. (line 41)
-* backslash-newline: Config files. (line 37)
-* basic glyph lookup: Basic glyph lookup. (line 6)
-* Berry, Karl: History. (line 12)
-* BIBINPUTS: Supported file formats.
- (line 30)
-* BIBINPUTS <1>: Supported file formats.
- (line 121)
-* blank lines, in 'texmf.cnf': Config files. (line 35)
-* BLTXMLINPUTS: Supported file formats.
- (line 34)
-* brace expansion: Brace expansion. (line 6)
-* Breitenlohner, Peter: History. (line 78)
-* BSTINPUTS: Supported file formats.
- (line 38)
-* BSTINPUTS <1>: Supported file formats.
- (line 125)
-* bug address: Reporting bugs. (line 6)
-* bug checklist: Bug checklist. (line 6)
-* bug mailing list: Mailing lists. (line 6)
-* bugs, reporting: Reporting bugs. (line 6)
-* c-*.h: Calling sequence. (line 117)
-* c-auto.h: Programming overview.
- (line 35)
-* cache of fonts, local: Security. (line 22)
-* calling sequence: Calling sequence. (line 6)
-* casefolding examples: Casefolding examples.
- (line 6)
-* casefolding fallback rationale: Casefolding rationale.
- (line 6)
-* casefolding search: Casefolding search. (line 6)
-* ChangeLog entry: Bug checklist. (line 52)
-* checklist for bug reports: Bug checklist. (line 6)
-* checksum: Suppressing warnings.
- (line 16)
-* circle fonts: Fontmap. (line 19)
-* client_path in 'kpse->format_info': Calling sequence. (line 47)
-* CLUAINPUTS: Supported file formats.
- (line 42)
-* CMAPFONTS: Supported file formats.
- (line 46)
-* cmr10, as fallback font: Fallback font. (line 15)
-* cmr10.vf: Searching overview. (line 31)
-* cnf.c: Config files. (line 112)
-* cnf.h: Programming with config files.
- (line 27)
-* comments, in fontmap files: Fontmap. (line 27)
-* comments, in 'texmf.cnf': Config files. (line 27)
-* comments, making: Introduction. (line 29)
-* common features in glyph lookup: Basic glyph lookup. (line 6)
-* common problems: Common problems. (line 6)
-* compilation value, source for path: Path sources. (line 23)
-* compiler bugs: TeX or Metafont failing.
- (line 6)
-* compiler bugs, finding: TeX or Metafont failing.
- (line 21)
-* conditions for use: Introduction. (line 32)
-* config files: Config files. (line 6)
-* config files, for Kpathsea-using programs: Calling sequence.
- (line 47)
-* config files, programming with: Programming with config files.
- (line 6)
-* config.h: Programming overview.
- (line 35)
-* config.log: Bug checklist. (line 24)
-* config.ps: Specially-recognized files.
- (line 16)
-* config.ps, search path for: Supported file formats.
- (line 57)
-* config.status: Bug checklist. (line 27)
-* configuration bugs: Bug checklist. (line 27)
-* configuration file, source for path: Path sources. (line 20)
-* configuration files as shell scripts.: Config files. (line 86)
-* configuration of 'mktex' scripts: mktex configuration. (line 6)
-* 'configure' options for 'mktex' scripts: mktex configuration.
- (line 12)
-* context diff: Bug checklist. (line 52)
-* continuation character: Config files. (line 37)
-* core dumps, reporting: Bug checklist. (line 58)
-* crashes, reporting: Bug checklist. (line 58)
-* CWEBINPUTS: Supported file formats.
- (line 53)
-* database search: Searching overview. (line 17)
-* database, for filenames: Filename database. (line 6)
-* database, format of: Database format. (line 6)
-* debug.h: Debugging. (line 6)
-* debugger: Bug checklist. (line 58)
-* debugging: Debugging. (line 6)
-* debugging options, in Kpathsea-using program: Calling sequence.
- (line 39)
-* debugging output: Debugging. (line 27)
-* default expansion: Default expansion. (line 6)
-* default_texsizes: Fallback font. (line 6)
-* device, wrong: Unable to generate fonts.
- (line 29)
-* directories, making append-only: mktex configuration. (line 61)
-* directory permissions: Security. (line 51)
-* directory structure, for TeX files: TeX directory structure.
- (line 6)
-* disabling 'mktex' scripts: mktex configuration. (line 6)
-* disk search: Searching overview. (line 22)
-* disk searching, avoiding: ls-R. (line 57)
-* disk usage, reducing: Logging. (line 6)
-* doc files: Supported file formats.
- (line 185)
-* DOS compatible names: mktex configuration. (line 68)
-* dosnames: mktex configuration. (line 67)
-* dot files: ls-R. (line 39)
-* doubled colons: Default expansion. (line 6)
-* dpiNNN directories: mktex configuration. (line 68)
-* DVILJMAKEPK: mktex script names. (line 32)
-* DVILJSIZES: Fallback font. (line 6)
-* dvipdfmx.cfg: Specially-recognized files.
- (line 19)
-* DVIPSFONTS: Supported file formats.
- (line 254)
-* DVIPSHEADERS: Supported file formats.
- (line 211)
-* DVIPSMAKEPK: mktex script names. (line 32)
-* DVIPSSIZES: Fallback font. (line 6)
-* dynamic creation of files: mktex scripts. (line 6)
-* EC fonts, and dynamic source creation: mktex scripts. (line 6)
-* elt-dirs.c: Subdirectory expansion.
- (line 41)
-* elt-dirs.c <1>: Subdirectory expansion.
- (line 48)
-* enabling 'mktex' scripts: mktex configuration. (line 6)
-* ENCFONTS: Supported file formats.
- (line 61)
-* engine name: Path searching options.
- (line 53)
-* environment variable, source for path: Path sources. (line 12)
-* environment variables for TeX: Supported file formats.
- (line 6)
-* environment variables in paths: Variable expansion. (line 6)
-* environment variables, old: Unable to find files.
- (line 14)
-* epoch, seconds since: Logging. (line 15)
-* error message macros: Calling sequence. (line 22)
-* examples, of casefolding searches: Casefolding examples.
- (line 6)
-* excessive startup time: Slow path searching. (line 6)
-* expand.c: Brace expansion. (line 26)
-* expanding symlinks: Calling sequence. (line 31)
-* expansion, default: Default expansion. (line 6)
-* expansion, path element: Searching overview. (line 49)
-* expansion, search path: Path expansion. (line 6)
-* expansion, subdirectory: Subdirectory expansion.
- (line 6)
-* expansion, tilde: Tilde expansion. (line 6)
-* expansion, variable: Variable expansion. (line 6)
-* explicitly relative filenames: Searching overview. (line 58)
-* extensions, filename: File lookup. (line 24)
-* externally-built filename database: Filename database. (line 6)
-* extra colons: Default expansion. (line 6)
-* failed 'mktex...' script invocation: mktex script names. (line 35)
-* fallback font: Fallback font. (line 6)
-* fallback resolutions: Fallback font. (line 6)
-* FAQ, Kpathsea: Common problems. (line 6)
-* Farwell, Matthew: Subdirectory expansion.
- (line 22)
-* file formats, supported: Supported file formats.
- (line 6)
-* file lookup: File lookup. (line 6)
-* file permissions: Security. (line 47)
-* file types, registering new: Programming overview.
- (line 41)
-* filename aliases: Filename aliases. (line 6)
-* filename database: Filename database. (line 6)
-* filenames, absolute or explicitly relative: Searching overview.
- (line 58)
-* files, unable to find: Unable to find files.
- (line 6)
-* filesystem search: Searching overview. (line 22)
-* filesystem, case-(in)sensitive: Casefolding rationale.
- (line 6)
-* Findutils, GNU package: Casefolding examples.
- (line 78)
-* floating directories: Searching overview. (line 22)
-* fmtutil: mktex script names. (line 10)
-* fmtutil.cnf: Specially-recognized files.
- (line 22)
-* fmtutils.cnf: mktex configuration. (line 24)
-* font alias files: Fontmap. (line 6)
-* font generation failures: Unable to generate fonts.
- (line 6)
-* font of last resort: Fallback font. (line 6)
-* font set, infinite: mktex scripts. (line 6)
-* FONTCIDMAPS: Supported file formats.
- (line 68)
-* FONTFEATURES: Supported file formats.
- (line 71)
-* fontmap files: Fontmap. (line 6)
-* fontmaps: mktex configuration. (line 86)
-* fontmaps <1>: mktex configuration. (line 87)
-* fontname: mktex configuration. (line 87)
-* fontnames, arbitrary length: Fontmap. (line 15)
-* FOOINPUTS: Supported file formats.
- (line 236)
-* FOOINPUTS <1>: Supported file formats.
- (line 239)
-* fopen, redefined: Debugging. (line 54)
-* format of external database: Database format. (line 6)
-* ftp.cs.stanford.edu: unixtex.ftp. (line 20)
-* ftp.tug.org: unixtex.ftp. (line 6)
-* fundamental purpose of Kpathsea: Introduction. (line 6)
-* gdb, recommended: Bug checklist. (line 58)
-* gf: Supported file formats.
- (line 75)
-* GFFONTS: Supported file formats.
- (line 75)
-* globally writable directories: Security. (line 30)
-* glyph lookup: Glyph lookup. (line 6)
-* glyph lookup bitmap tolerance: Basic glyph lookup. (line 15)
-* GLYPHFONTS: Supported file formats.
- (line 75)
-* GLYPHFONTS <1>: Supported file formats.
- (line 164)
-* glyphlist.txt: Specially-recognized files.
- (line 25)
-* GNU C compiler bugs: TeX or Metafont failing.
- (line 16)
-* GNU General Public License: Introduction. (line 32)
-* group-writable directories: Security. (line 40)
-* GSFTOPK_DEBUG (128): Debugging. (line 88)
-* hash table buckets, printing: Debugging. (line 105)
-* hash table routines: Calling sequence. (line 110)
-* hash_summary_only variable for debugging: Debugging. (line 105)
-* history of Kpathsea: History. (line 6)
-* Hoekwater, Taco: History. (line 78)
-* home directories in paths: Tilde expansion. (line 6)
-* HOME, as ~ expansion: Tilde expansion. (line 6)
-* identifiers, characters valid in: Config files. (line 47)
-* include fontmap directive: Fontmap. (line 36)
-* INDEXSTYLE: Supported file formats.
- (line 84)
-* input lines, reading: Calling sequence. (line 110)
-* interactive query: Path searching options.
- (line 151)
-* interface, not frozen: Introduction. (line 29)
-* introduction: Introduction. (line 6)
-* 'kdebug:': Debugging. (line 105)
-* kdefault.c: Default expansion. (line 48)
-* Knuth, Donald E.: History. (line 6)
-* Knuth, Donald E., archive of programs by: unixtex.ftp. (line 20)
-* Kpathsea config file, source for path: Path sources. (line 20)
-* kpathsea.h: Programming overview.
- (line 26)
-* kpathsea_cnf_get: Programming with config files.
- (line 27)
-* KPATHSEA_DEBUG: Calling sequence. (line 28)
-* KPATHSEA_DEBUG <1>: Debugging. (line 18)
-* kpathsea_find_file: File lookup. (line 38)
-* kpathsea_find_file <1>: Calling sequence. (line 62)
-* kpathsea_find_glyph: Glyph lookup. (line 26)
-* kpathsea_finish: Calling sequence. (line 106)
-* kpathsea_init_prog: Fallback font. (line 15)
-* kpathsea_init_prog <1>: Calling sequence. (line 53)
-* kpathsea_in_name_ok: Calling sequence. (line 101)
-* kpathsea_new: Calling sequence. (line 9)
-* kpathsea_open_file: Calling sequence. (line 74)
-* kpathsea_out_name_ok: Calling sequence. (line 82)
-* kpathsea_set_program_name: Calling sequence. (line 14)
-* kpathsea_var_value: Programming with config files.
- (line 10)
-* KPATHSEA_WARNING: Config files. (line 18)
-* kpse->debug: Debugging. (line 6)
-* kpse->debug <1>: Debugging. (line 18)
-* kpse->debug variable: Calling sequence. (line 39)
-* kpse->format_info: Calling sequence. (line 47)
-* kpse->invocation_name: Calling sequence. (line 22)
-* kpse->invocation_short_name: Calling sequence. (line 22)
-* kpse->program_name: Calling sequence. (line 22)
-* kpsewhich: Invoking kpsewhich. (line 6)
-* Kpsewhich, and debugging: Debugging. (line 31)
-* KPSE_BITMAP_TOLERANCE: Basic glyph lookup. (line 15)
-* KPSE_DEBUG_EXPAND (16): Debugging. (line 68)
-* KPSE_DEBUG_FOPEN (4): Debugging. (line 53)
-* KPSE_DEBUG_HASH (2): Debugging. (line 46)
-* KPSE_DEBUG_PATHS (8): Debugging. (line 60)
-* KPSE_DEBUG_SEARCH (32): Debugging. (line 74)
-* KPSE_DEBUG_STAT (1): Debugging. (line 38)
-* KPSE_DEBUG_VARS (64): Debugging. (line 83)
-* KPSE_DOT expansion: KPSE_DOT expansion. (line 6)
-* kpse_format_info_type: Debugging. (line 61)
-* last-resort font: Fallback font. (line 6)
-* lcircle10: Fontmap. (line 19)
-* leading colons: Default expansion. (line 6)
-* leaf directories wrongly guessed: Unable to find files.
- (line 21)
-* leaf directory trick: Subdirectory expansion.
- (line 22)
-* license for using the library: Introduction. (line 32)
-* LIGFONTS: Supported file formats.
- (line 88)
-* lines, reading arbitrary-length: Calling sequence. (line 110)
-* Linux File System Standard: mktex configuration. (line 113)
-* local cache of fonts: Security. (line 22)
-* log file: Logging. (line 6)
-* logging successful searches: Logging. (line 6)
-* lost+found directory: Searching overview. (line 63)
-* lostchar: Suppressing warnings.
- (line 19)
-* ls-R: Supported file formats.
- (line 91)
-* ls-R database file: ls-R. (line 6)
-* ls-R, simplest build: ls-R. (line 22)
-* Mac filesystem, case-insensitive: Casefolding rationale.
- (line 6)
-* MacKenzie, David: History. (line 44)
-* MacKenzie, David <1>: Subdirectory expansion.
- (line 22)
-* magic characters: Searching overview. (line 13)
-* mailing lists: Mailing lists. (line 6)
-* MAKETEX_DEBUG (512): Debugging. (line 91)
-* MAKETEX_FINE_DEBUG (1024): Debugging. (line 100)
-* memory allocation routines: Calling sequence. (line 110)
-* metafont driver files: mktex configuration. (line 93)
-* Metafont failures: TeX or Metafont failing.
- (line 6)
-* Metafont installation: Unable to generate fonts.
- (line 51)
-* Metafont making too-large fonts: Unable to generate fonts.
- (line 36)
-* Metafont using the wrong device: Unable to generate fonts.
- (line 29)
-* MFBASES: Supported file formats.
- (line 26)
-* MFINPUTS: Supported file formats.
- (line 105)
-* MFPOOL: Supported file formats.
- (line 109)
-* MFTINPUTS: Supported file formats.
- (line 113)
-* MISCFONTS: Supported file formats.
- (line 117)
-* mismatched checksum warnings: Suppressing warnings.
- (line 17)
-* missfont.log: mktex script names. (line 35)
-* MISSFONT_LOG: mktex script names. (line 40)
-* missing character warnings: Suppressing warnings.
- (line 20)
-* mkocp: mktex script names. (line 18)
-* mkofm: mktex script names. (line 21)
-* 'mktex' script configuration: mktex configuration. (line 6)
-* 'mktex' script names: mktex script names. (line 6)
-* 'mktex' scripts: mktex scripts. (line 6)
-* mktex.cnf: Specially-recognized files.
- (line 28)
-* mktex.cnf <1>: mktex configuration. (line 29)
-* mktex.opt: mktex configuration. (line 29)
-* mktex.opt <1>: mktex configuration. (line 39)
-* mktexdir: mktex configuration. (line 61)
-* mktexfmt: mktex script names. (line 10)
-* mktexmf: mktex script names. (line 15)
-* mktexpk: mktex script names. (line 24)
-* 'mktexpk' can't guess mode: Unable to generate fonts.
- (line 12)
-* mktextex: mktex script names. (line 27)
-* mktextfm: mktex script names. (line 30)
-* MLBIBINPUTS: Supported file formats.
- (line 121)
-* MLBSTINPUTS: Supported file formats.
- (line 125)
-* mode directory, omitting: mktex configuration. (line 98)
-* Morgan, Tim: History. (line 12)
-* MPINPUTS: Supported file formats.
- (line 129)
-* MPMEMS: Supported file formats.
- (line 97)
-* MPPOOL: Supported file formats.
- (line 133)
-* MPSUPPORT: Supported file formats.
- (line 101)
-* MT_FEATURES: mktex configuration. (line 39)
-* multiple TeX hierarchies: Brace expansion. (line 20)
-* must exist: Searching overview. (line 31)
-* names for 'mktex' scripts: mktex script names. (line 6)
-* Neumann, Gustaf: History. (line 56)
-* NFS and 'ls-R': ls-R. (line 46)
-* nomfdrivers: mktex configuration. (line 92)
-* nomode: mktex configuration. (line 97)
-* none: Suppressing warnings.
- (line 23)
-* null pointers, dereferencing: Bug checklist. (line 58)
-* numeric debugging values: Debugging. (line 34)
-* obtaining TeX: unixtex.ftp. (line 6)
-* OCPINPUTS: Supported file formats.
- (line 137)
-* OFMFONTS: Supported file formats.
- (line 141)
-* online Metafont display, spurious: Unable to generate fonts.
- (line 36)
-* OPENTYPEFONTS: Supported file formats.
- (line 145)
-* optimization caveat: TeX or Metafont failing.
- (line 12)
-* options for debugging: Debugging. (line 6)
-* OTPINPUTS: Supported file formats.
- (line 151)
-* overview of path searching: Searching overview. (line 6)
-* overview of programming with Kpathsea: Programming overview.
- (line 6)
-* OVFFONTS: Supported file formats.
- (line 154)
-* OVPFONTS: Supported file formats.
- (line 157)
-* path expansion: Path expansion. (line 6)
-* path searching: Path searching. (line 6)
-* path searching options: Path searching options.
- (line 6)
-* path searching, overview: Searching overview. (line 6)
-* path searching, standalone: Invoking kpsewhich. (line 6)
-* path sources: Path sources. (line 6)
-* pathsearch.h: Programming overview.
- (line 26)
-* pc Pascal compiler: History. (line 12)
-* pdfglyphlist.txt: Specially-recognized files.
- (line 31)
-* pdftex.cfg: Specially-recognized files.
- (line 34)
-* PDFTEXCONFIG: Supported file formats.
- (line 161)
-* pdftexconfig.tex: Specially-recognized files.
- (line 34)
-* permission denied: Searching overview. (line 63)
-* permissions, directory: Security. (line 51)
-* permissions, file: Security. (line 47)
-* PKFONTS: Supported file formats.
- (line 164)
-* plain.base: Unable to generate fonts.
- (line 46)
-* privacy, semblance of: Logging. (line 32)
-* problems, common: Common problems. (line 6)
-* proginit.h: Calling sequence. (line 53)
-* program-varying paths: Supported file formats.
- (line 12)
-* programming overview: Programming overview.
- (line 6)
-* programming with config files: Programming with config files.
- (line 6)
-* programming with Kpathsea: Calling sequence. (line 6)
-* programs using the library: Introduction. (line 13)
-* proof mode: Unable to generate fonts.
- (line 36)
-* PSHEADERS: Supported file formats.
- (line 169)
-* pxp Pascal preprocessor: History. (line 12)
-* quoting variable values: Variable expansion. (line 17)
-* rationale for casefolding fallback: Casefolding rationale.
- (line 6)
-* re-entrant API: Programming overview.
- (line 16)
-* readable: Suppressing warnings.
- (line 26)
-* reading arbitrary-length lines: Calling sequence. (line 110)
-* recording successful searches: Logging. (line 6)
-* relative filenames: Searching overview. (line 58)
-* reporting bugs: Reporting bugs. (line 6)
-* resident.c: Calling sequence. (line 47)
-* resolution, setting: Path searching options.
- (line 49)
-* resolutions, last-resort: Fallback font. (line 6)
-* retrieving TeX: unixtex.ftp. (line 6)
-* right-hand side of variable assignments: Config files. (line 57)
-* RISINPUTS: Supported file formats.
- (line 173)
-* Rokicki, Tom: History. (line 12)
-* root user: Tilde expansion. (line 19)
-* runtime configuration files: Config files. (line 6)
-* runtime debugging: Debugging. (line 6)
-* Sauter fonts, and dynamic source creation: mktex scripts. (line 6)
-* scripts for file creation: mktex scripts. (line 6)
-* search path, defined: Searching overview. (line 6)
-* search, case-insensitive: Casefolding search. (line 6)
-* searching for files: File lookup. (line 6)
-* searching for glyphs: Glyph lookup. (line 6)
-* searching overview: Searching overview. (line 6)
-* searching the database: Searching overview. (line 17)
-* searching the disk: Searching overview. (line 22)
-* security considerations: Security. (line 6)
-* SELFAUTODIR: Calling sequence. (line 31)
-* SELFAUTOLOC: Calling sequence. (line 31)
-* SELFAUTOPARENT: Calling sequence. (line 31)
-* sending patches: Bug checklist. (line 52)
-* setgid scripts: Security. (line 40)
-* SFDFONTS: Supported file formats.
- (line 177)
-* shell scripts as configuration files: Config files. (line 86)
-* shell variables: Variable expansion. (line 17)
-* shell_escape, example for code: Programming with config files.
- (line 10)
-* site overrides for 'mktex...': mktex configuration. (line 29)
-* skeleton TeX directory: TeX directory structure.
- (line 6)
-* slow startup time: Slow path searching. (line 6)
-* source files: Supported file formats.
- (line 188)
-* sources for search paths: Path sources. (line 6)
-* special: Suppressing warnings.
- (line 30)
-* stack trace: Bug checklist. (line 58)
-* standalone path searching: Invoking kpsewhich. (line 6)
-* standard error and debugging output: Debugging. (line 27)
-* standard options: Standard options. (line 6)
-* startup time, excessive: Slow path searching. (line 6)
-* string routines: Calling sequence. (line 110)
-* strip: mktex configuration. (line 107)
-* stripsupplier: mktex configuration. (line 101)
-* striptypeface: mktex configuration. (line 104)
-* st_nlink: Subdirectory expansion.
- (line 26)
-* ST_NLINK_TRICK: Subdirectory expansion.
- (line 38)
-* subdirectory searching: Subdirectory expansion.
- (line 6)
-* suffixes, filename: File lookup. (line 24)
-* suggestions, making: Introduction. (line 29)
-* Sun 2: History. (line 12)
-* supplier directory, omitting: mktex configuration. (line 102)
-* supplier directory, omitting <1>: mktex configuration. (line 108)
-* supported file formats: Supported file formats.
- (line 6)
-* suppressing warnings: Suppressing warnings.
- (line 6)
-* symbolic links not found: Unable to find files.
- (line 21)
-* symbolic links, and 'ls-R': ls-R. (line 44)
-* symlinks, resolving: Calling sequence. (line 31)
-* system C compiler bugs: TeX or Metafont failing.
- (line 16)
-* system-dependent casefolding behavior: Casefolding rationale.
- (line 6)
-* T1FONTS: Supported file formats.
- (line 211)
-* T1INPUTS: Supported file formats.
- (line 211)
-* T42FONTS: Supported file formats.
- (line 216)
-* tcfmgr.map: Specially-recognized files.
- (line 46)
-* TDS: TeX directory structure.
- (line 6)
-* TeX directory structure: TeX directory structure.
- (line 6)
-* TeX environment variables: Supported file formats.
- (line 6)
-* TeX failures: TeX or Metafont failing.
- (line 6)
-* TeX file lookup: File lookup. (line 6)
-* TeX glyph lookup: Glyph lookup. (line 6)
-* TeX support: TeX support. (line 6)
-* TeX Users Group: Introduction. (line 43)
-* tex-file.c: File lookup. (line 38)
-* tex-file.h: Programming overview.
- (line 26)
-* tex-glyph.c: Glyph lookup. (line 26)
-* tex-glyph.h: Programming overview.
- (line 26)
-* tex-k@tug.org: Mailing lists. (line 6)
-* tex-k@tug.org (bug address): Reporting bugs. (line 6)
-* tex.web: unixtex.ftp. (line 20)
-* TEXBIB: Supported file formats.
- (line 30)
-* TEXBIB <1>: Supported file formats.
- (line 121)
-* TEXCONFIG: Supported file formats.
- (line 57)
-* TEXDOCS: Supported file formats.
- (line 185)
-* TEXFONTMAPS: Supported file formats.
- (line 94)
-* TEXFONTS: Supported file formats.
- (line 75)
-* TEXFONTS <1>: Supported file formats.
- (line 164)
-* TEXFONTS <2>: Supported file formats.
- (line 199)
-* TEXFONTS <3>: Supported file formats.
- (line 219)
-* texfonts.map: Fontmap. (line 6)
-* TEXFORMATS: Supported file formats.
- (line 64)
-* TEXINDEXSTYLE: Supported file formats.
- (line 84)
-* TEXINPUTS: Supported file formats.
- (line 79)
-* TEXINPUTS <1>: Supported file formats.
- (line 180)
-* TEXMF: TeX directory structure.
- (line 6)
-* texmf.cnf: Specially-recognized files.
- (line 38)
-* 'texmf.cnf' missing, warning about: Config files. (line 18)
-* texmf.cnf, and variable expansion: Variable expansion. (line 6)
-* texmf.cnf, definition for: Config files. (line 6)
-* texmf.cnf, source for path: Path sources. (line 20)
-* TEXMFCNF: Config files. (line 6)
-* TEXMFCNF <1>: Supported file formats.
- (line 49)
-* TEXMFDBS: ls-R. (line 11)
-* TEXMFDBS <1>: Supported file formats.
- (line 91)
-* TEXMFINI: Supported file formats.
- (line 26)
-* TEXMFINI <1>: Supported file formats.
- (line 64)
-* TEXMFINI <2>: Supported file formats.
- (line 97)
-* TEXMFLOG: Logging. (line 10)
-* TEXMFOUTPUT: mktex script names. (line 40)
-* TEXMFSCRIPTS: Supported file formats.
- (line 191)
-* texmfvar: mktex configuration. (line 122)
-* TEXMFVAR: mktex configuration. (line 123)
-* texmf_casefold_search: Casefolding search. (line 12)
-* TEXPICTS: Supported file formats.
- (line 79)
-* TEXPKS: Supported file formats.
- (line 164)
-* TEXPOOL: Supported file formats.
- (line 195)
-* TEXPSHEADERS: Supported file formats.
- (line 169)
-* TEXPSHEADERS <1>: Supported file formats.
- (line 211)
-* TEXSIZES: Fallback font. (line 6)
-* TEXSOURCES: Supported file formats.
- (line 188)
-* TEX_HUSH: Searching overview. (line 63)
-* TEX_HUSH <1>: Suppressing warnings.
- (line 6)
-* TFMFONTS: Supported file formats.
- (line 199)
-* tilde expansion: Tilde expansion. (line 6)
-* tilde.c: Tilde expansion. (line 25)
-* time system call: Logging. (line 15)
-* tolerance for glyph lookup: Basic glyph lookup. (line 15)
-* trailing '/' in home directory: Tilde expansion. (line 19)
-* trailing colons: Default expansion. (line 6)
-* translations, of path searching description: Path searching.
- (line 10)
-* TRFONTS: Supported file formats.
- (line 203)
-* trick for detecting leaf directories: Subdirectory expansion.
- (line 22)
-* trojan horse attack: Security. (line 10)
-* try_std_extension_first: File lookup. (line 24)
-* TTFONTS: Supported file formats.
- (line 207)
-* tug.org: unixtex.ftp. (line 6)
-* typeface directory, omitting: mktex configuration. (line 105)
-* typeface directory, omitting <1>: mktex configuration. (line 108)
-* unable to find files: Unable to find files.
- (line 6)
-* unable to generate fonts: Unable to generate fonts.
- (line 6)
-* uname: Bug checklist. (line 20)
-* unixtex.ftp: unixtex.ftp. (line 6)
-* unknown special warnings: Suppressing warnings.
- (line 31)
-* unreadable file warnings: Suppressing warnings.
- (line 27)
-* unreadable files: Searching overview. (line 63)
-* unusable 'ls-R' warning: ls-R. (line 51)
-* usage patterns, finding: Logging. (line 6)
-* USERPROFILE, as ~ expansion: Tilde expansion. (line 6)
-* USE_TEXMFVAR: mktex configuration. (line 128)
-* USE_VARTEXFONTS: mktex configuration. (line 118)
-* varfonts: mktex configuration. (line 112)
-* variable expansion: Variable expansion. (line 6)
-* variable.c: Variable expansion. (line 32)
-* variable.h: Programming with config files.
- (line 10)
-* VARTEXFONTS: mktex configuration. (line 113)
-* VAX 11/750: History. (line 12)
-* version numbers, determining: Bug checklist. (line 15)
-* VF files, not found: Searching overview. (line 31)
-* VFFONTS: Supported file formats.
- (line 219)
-* Vojta, Paul: History. (line 30)
-* Walsh, Norman: History. (line 56)
-* warning about unusable 'ls-R': ls-R. (line 51)
-* warning, about missing 'texmf.cnf': Config files. (line 18)
-* warnings, file access: Searching overview. (line 63)
-* warnings, suppressing: Suppressing warnings.
- (line 6)
-* WEB2C: Supported file formats.
- (line 227)
-* Weber, Olaf: History. (line 73)
-* WEBINPUTS: Supported file formats.
- (line 223)
-* whitespace, in fontmap files: Fontmap. (line 31)
-* whitespace, not ignored on continuation lines: Config files.
- (line 37)
-* Windows and casefolding: Casefolding rationale.
- (line 21)
-* www.tug.org: unixtex.ftp. (line 6)
-* XDvi: Specially-recognized files.
- (line 41)
-* XDVIFONTS: Supported file formats.
- (line 254)
-* XDVIMAKEPK: mktex script names. (line 32)
-* XDVISIZES: Fallback font. (line 6)
-* zuhn, david: History. (line 50)
-
-
-
-Tag Table:
-Node: Top1480
-Node: Introduction2263
-Node: History4333
-Node: unixtex.ftp8929
-Node: Security10399
-Node: TeX directory structure12903
-Node: Path searching16944
-Node: Searching overview17902
-Node: Path sources21721
-Node: Config files22947
-Node: Path expansion28210
-Node: Default expansion29163
-Node: Variable expansion31233
-Node: Tilde expansion32634
-Node: Brace expansion33614
-Node: KPSE_DOT expansion34553
-Node: Subdirectory expansion35066
-Node: Casefolding search37414
-Node: Casefolding rationale38183
-Node: Casefolding examples39529
-Node: Filename database44575
-Node: ls-R45557
-Node: Filename aliases49233
-Node: Database format50411
-Node: Invoking kpsewhich51424
-Node: Path searching options52379
-Node: Specially-recognized files61977
-Node: Auxiliary tasks63332
-Node: Standard options67057
-Node: TeX support67413
-Node: Supported file formats68767
-Node: File lookup76435
-Node: Glyph lookup78184
-Node: Basic glyph lookup79308
-Node: Fontmap80188
-Node: Fallback font82717
-Node: Suppressing warnings83629
-Node: mktex scripts84756
-Node: mktex configuration85971
-Node: mktex script names91774
-Node: mktex script arguments93160
-Node: Programming94039
-Node: Programming overview94612
-Node: Calling sequence97473
-Node: Program-specific files104002
-Node: Programming with config files105025
-Node: Reporting bugs106612
-Node: Bug checklist107290
-Node: Mailing lists110759
-Node: Debugging111436
-Node: Logging116513
-Node: Common problems118380
-Node: Unable to find files118857
-Node: Slow path searching121267
-Node: Unable to generate fonts122642
-Node: TeX or Metafont failing125114
-Node: Index126316
-
-End Tag Table