diff options
author | Karl Berry <karl@freefriends.org> | 2007-12-24 14:51:54 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2007-12-24 14:51:54 +0000 |
commit | 9fbb767e62c3dace277d685171e0c747a4e230eb (patch) | |
tree | 731df59d659aedc0bbaf00e76cccf99754f70c93 /Build | |
parent | 5921ffdd9e1e1fd87ade6e2ae275e6571888ec43 (diff) |
remove another cps, but we need info to avoid rebuild
git-svn-id: svn://tug.org/texlive/trunk@5881 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build')
-rw-r--r-- | Build/source/texk/kpathsea/kpathsea.info | 4658 | ||||
-rw-r--r-- | Build/source/texk/web2c/doc/web2c.cps | 846 |
2 files changed, 4658 insertions, 846 deletions
diff --git a/Build/source/texk/kpathsea/kpathsea.info b/Build/source/texk/kpathsea/kpathsea.info new file mode 100644 index 00000000000..067e63e8037 --- /dev/null +++ b/Build/source/texk/kpathsea/kpathsea.info @@ -0,0 +1,4658 @@ +INFO-DIR-SECTION TeX +START-INFO-DIR-ENTRY +This is kpathsea.info, produced by makeinfo version 4.11 from kpathsea.texi. + +* Kpathsea: (kpathsea). File lookup along search paths. +* kpsewhich: (kpathsea)Invoking kpsewhich. TeX file searching. +* 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. +* mktexlsr: (kpathsea)Filename database. Update ls-R. +END-INFO-DIR-ENTRY + + This file documents the Kpathsea library for path searching. + + Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +2005, 2007 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 Free Software Foundation. + + +File: kpathsea.info, Node: Top, Next: Introduction, Up: (dir) + +Kpathsea library +**************** + +This manual documents how to install and use the Kpathsea library for +filename lookup. It corresponds to version 3.5.6dev, released in +May 2007. + +* Menu: + +* Introduction:: Overview. +* Installation:: Compilation, installation, and bug reporting. + +* Path searching:: How filename lookups work. +* TeX support:: Special support for TeX-related file lookups. + +* Programming:: How to use Kpathsea features in your program. + +* Index:: General index. + + +File: kpathsea.info, Node: Introduction, Next: Installation, Prev: Top, Up: Top + +1 Introduction +************** + +This manual corresponds to version 3.5.6dev of the Kpathsea library, +released in May 2007. + + 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 we maintain, uses this library: + + * Dviljk (see the `dvilj' man page) + + * Dvipsk (*note Introduction: (dvips)Top.) + + * GNU font utilities (*note Introduction: (fontu)Top.) + + * Web2c (*note Introduction: (web2c)Top.) + + * Xdvik (see the `xdvi' man page) + +Other software that we do not maintain also uses it. + + We are still actively maintaining the library (and probably always +will be, despite our hopes). If you have comments or suggestions, +please send them to us (*note Reporting bugs::). + + We distribute the library under the GNU Library General Public +License (LGPL). 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, although we hope you +will. See the files `GPL' and `LGPL' for the text of the GNU 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, great!). 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. Anyway, here is the address: + + TeX Users Group + P.O. Box 2311 + Portland OR 97208-2311 + USA + phone: +1 503 223-9994 + fax: +1 503 223-3960 + email: <tug@tug.org> + +* 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 `Software--Practice and Experience' +19(7), July 1989.) + + [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. 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, though I think Paul Vojta has completely rewritten Xdvi's +support by now. That is, I tried to go with the flow in each program, +rather than changing the program's calling sequences to conform to +common routines. + + Then, as bugs inevitably appeared, I found I was fixing the same +thing three times (Web2c and fontutils were always sharing code, since I +maintained 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 that 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. + + +File: kpathsea.info, Node: Installation, Next: Path searching, Prev: Introduction, Up: Top + +2 Installation +************** + +(A copy of this chapter is in the distribution file `kpathsea/INSTALL'.) + +The procedure for Kpathsea (and Web2c, etc.) configuration and +installation follows. If you encounter trouble, see *note Common +problems::, a copy of which is in the file `kpathsea/BUGS'. + +* Menu: + +* Simple installation:: If you just want to do it. +* Custom installation:: If you want to change things around. +* Security:: Who can write what files, etc. +* TeX directory structure:: Managing the horde of TeX input files. +* unixtex.ftp:: Getting software via FTP, on CD-ROM, or on tape. +* Reporting bugs:: Where and how to report bugs. + + +File: kpathsea.info, Node: Simple installation, Next: Custom installation, Up: Installation + +2.1 Simple installation +======================= + +Installing TeX and friends for the first time can be a daunting +experience. Thus, you may prefer to skip this whole thing and just get +precompiled executables: see *note unixtex.ftp::. + + This section explains what to do if you wish to take the defaults for +everything, and generally to install in the simplest possible way. Most +steps here refer to corresponding subsection in the next section which +explains how to override defaults and generally gives more details. + + By default everything will be installed under `/usr/local' and the +following discussion assumes this. However, if you already have TeX +installed, its location is used to derive the directory under which +everything is to be installed. + + 1. Be sure you have enough disk space: approximately 8 megabytes for + the compressed archives, 15MB for sources, 50MB for compilation, + 40MB for the (initial) installed system (including library files). + *Note Disk space::. + + 2. Retrieve these distribution archives: + `ftp://ftp.tug.org/tex/texk.tar.gz' + These are the sources, which you will be compiling. + + `ftp://ftp.tug.org/tex/texklib.tar.gz' + This is a basic set of input files. You should unpack it in + the directory `/usr/local/share'; doing so will create a + `texmf' subdirectory there. + + These archives are mirrored on the CTAN hosts, in the + `systems/web2c' directory. + + *Note Kpathsea application distributions::. + + 3. When using the default search paths, there is no need to edit any + distribution files. *Note Changing search paths::. + + 4. At the top level of the distribution, run `sh configure'. (If you + have the GNU Bash shell installed, run `bash configure'.) *Note + Running configure::. + + 5. `make'. *Note Running make::. If you are using a BSD 4.4 system + such as FreeBSD or NetBSD, you may have to use GNU make (often + installed in `/usr/local/bin'), not the BSD make. + + 6. `make install'. *Note Installing files::. + + 7. `make distclean'. *Note Cleaning up::. + + 8. Set up a cron job to rebuild the filename database that makes + searching faster. This line will rebuild it every midnight: + 0 0 * * * cd /usr/local/share/texmf && /BINDIR/mktexlsr + *Note Filename database generation::, and *note Filename + database::. + + 9. If you're installing Dvips, you also need to set up configuration + files for your printers and make any additional PostScript fonts + available. *Note Installation: (dvips)Installation. If you have + any color printers, see *note Color device configuration: + (dvips)Color device configuration. + + 10. The first time you run a DVI driver, a bunch of PK fonts will be + built by Metafont via `mktexpk' (and added to the filename + database). This will take some time. Don't be alarmed; they will + created only this first time (unless something is wrong with your + path definitions). + + By default, `mktexpk' will create these fonts in a hierarchy under + `/var/tmp/texfonts'; it simply assumes that `/var/tmp' exists and + is globally writable. If you need a different arrangement, see + *note mktex configuration::. + + *Note mktex scripts::. + + 11. For some simple tests, try `tex story \\bye' and `latex sample2e'. + Then run `xdvi story' or `dvips sample2e' on the resulting DVI + files to preview/print the documents. *Note Installation + testing::. + + +File: kpathsea.info, Node: Custom installation, Next: Security, Prev: Simple installation, Up: Installation + +2.2 Custom installation +======================= + +Most sites need to modify the default installation procedure in some +way, perhaps merely changing the prefix from `/usr/local', perhaps +adding extra compiler or loader options to work around `configure' +bugs. This section explains how to override default choices. For +additional distribution-specific information: + * `dviljk/INSTALL'. + + * *Note Installation: (dvips)Installation. + + * *Note Installation: (web2c)Installation. + + * `xdvik/INSTALL'. + + These instructions are for Unix systems. Other operating-system +specific distributions have their own instructions. The code base +itself supports Amiga, DOS, OS/2, and VMS. + + Following are the same steps as in the previous section (which +describes the simplest installation), but with much more detail. + +* Menu: + +* Disk space:: +* Kpathsea application distributions:: +* Changing search paths:: +* Running configure:: +* Running make:: +* Installing files:: +* Cleaning up:: +* Filename database generation:: +* mktex scripts:: +* Installation testing:: + + +File: kpathsea.info, Node: Disk space, Next: Kpathsea application distributions, Up: Custom installation + +2.2.1 Disk space +---------------- + +Here is a table showing the disk space needed for each distribution +(described in the next section). The `(totals)' line reflects the +`texk' source distribution and `texklib'; the individual distributions +don't enter into it. Sizes are in megabytes. All numbers are +approximate. + +Distribution .tar.gz Unpacked Compiled Installed +dviljk .9 3.8 +dvipsk .9 3.2 +xdvik .7 2.5 +web2c 1.3 5.0 +web 1.9 6.5 - - +texk 7.5 32.1 95.3 33.5 +texklib 6.3 15.0 - 15.0 +(totals) 14.6 47.1 95.3 48.5 + + +File: kpathsea.info, Node: Kpathsea application distributions, Next: Changing search paths, Prev: Disk space, Up: Custom installation + +2.2.2 Kpathsea application distributions +---------------------------------------- + +The archive `ftp://ftp.tug.org/tex/texk.tar.gz' contains all of the +Kpathsea applications I maintain, and the library itself. For example, +since NeXT does not generally support X11, you'd probably want to skip +`xdvik' (or simply remove it after unpacking `texk.tar.gz'. If you are +not interested in all of them, you can also retrieve them separately: + +`dviljk.tar.gz' + DVI to PCL, for LaserJet printers. + +`dvipsk.tar.gz' + DVI to PostScript, for previewers, printers, or PDF generation. + +`web2c.tar.gz' + The software needed to compile TeX and friends. + +`web.tar.gz' + The original WEB source files, also used in compilation. + +`xdvik.tar.gz' + DVI previewing under the X window system. + + + If you want to use the Babel LaTeX package for support of non-English +typesetting, you may need to retrieve additional files. See the file +`install.txt' in the Babel distribution. + + +File: kpathsea.info, Node: Changing search paths, Next: Running configure, Prev: Kpathsea application distributions, Up: Custom installation + +2.2.3 Changing search paths +--------------------------- + +If the search paths for your installation differ from the standard TeX +directory structure (*note Introduction: (tds)Top.), edit the file +`kpathsea/texmf.in' as desired, before running `configure'. For +example, if you have all your fonts or macros in one big directory. + + You may also wish to edit the file `mktex.cnf', either before or +after installation, to control various aspects of `mktexpk' and +friends. *Note mktex configuration::. + + You do not need to edit `texmf.in' to change the default top-level +or other installation _directories_ (only the paths). You can and +should do that when you run `configure' (next step). + + You also do not need to edit `texmf.in' if you are willing to rely +on `texmf.cnf' at runtime to define the paths, and let the compile-time +default paths be incorrect. Usually there is no harm in doing this. + + The section below explains default generation in more detail. + +* Menu: + +* Default path features:: +* Default path generation:: + + +File: kpathsea.info, Node: Default path features, Next: Default path generation, Up: Changing search paths + +2.2.3.1 Default path features +............................. + +The purpose of having all the different files described in the section +above is to avoid having the same information in more than one place. If +you change the installation directories or top-level prefix at +`configure'-time, those changes will propagate through the whole +sequence. And if you change the default paths in `texmf.in', those +changes are propagated to the compile-time defaults. + + The Make definitions are all repeated in several Makefile's; but +changing the top-level `Makefile' should suffice, as it passes down all +the variable definitions, thus overriding the submakes. (The +definitions are repeated so you can run Make in the subdirectories, if +you should have occasion to.) + + By default, the bitmap font paths end with `/$MAKETEX_MODE', thus +including the device name (usually a Metafont mode name such as +`ljfour'). This distinguishes two different devices with the same +resolution--a write/white from a write/black 300dpi printer, for +example. + + However, since most sites don't have this complication, Kpathsea +(specifically, the `kpse_init_prog' function in `kpathsea/proginit.c') +has a special case: if the mode has not been explicitly set by the user +(or in a configuration file), it sets `MAKETEX_MODE' to `/'. This +makes the default PK path, for example, expand into `.../pk//', so +fonts will be found even if there is no subdirectory for the mode (if +you arranged things that way because your site has only one printer, +for example) or if the program is mode-independent (e.g., `pktype'). + + To make the paths independent of the mode, simply edit `texmf.in' +before installation, or the installed `texmf.cnf', and remove the +`$MAKETEX_MODE'. + + *Note mktex script arguments::, for how this interacts with +`mktexpk'. + + *Note TeX directory structure: TeX directory structure, for a +description of the default arrangement of the input files that comprise +the TeX system. The file `kpathsea/HIER' is a copy of that section. + + +File: kpathsea.info, Node: Default path generation, Prev: Default path features, Up: Changing search paths + +2.2.3.2 Default path generation +............................... + +This section describes how the default paths are constructed. + + You may wish to ignore the whole mess and simply edit `texmf.cnf' +after it is installed, perhaps even copying it into place beforehand so +you can complete the installation, if it seems necessary. + + To summarize the chain of events that go into defining the default +paths: + + 1. `configure' creates a `Makefile' from each `Makefile.in'. + + 2. When Make runs in the `kpathsea' directory, it creates a file + `texmf.sed' that substitutes the Make value of `$(var)' for a + string `@var@'. The variables in question are the one that define + the installation directories. + + 3. `texmf.sed' (together with a little extra magic--see + `kpathsea/Makefile') is applied to `texmf.in' to generate + `texmf.cnf'. This is the file that will eventually be installed + and used. + + 4. The definitions in `texmf.cnf' are recast as C `#define''s in + `paths.h'. These values will be the compile-time defaults; they + are not used at runtime unless no `texmf.cnf' file can be found. + + (That's a lie: the compile-time defaults are what any extra :'s in + `texmf.cnf' expand into; but the paths as distributed have no extra + :'s, and there's no particular reason for them to.) + + +File: kpathsea.info, Node: Running configure, Next: Running make, Prev: Changing search paths, Up: Custom installation + +2.2.4 Running `configure' +------------------------- + +Run `sh configure OPTIONS' (in the top-level directory, the one +containing `kpathsea/'), possibly using a shell other than `sh' (*note +configure shells::). + + `configure' adapts the source distribution to the present system via +`#define''s in `*/c-auto.h', which are created from the corresponding +`c-auto.in'. It also creates a `Makefile' from the corresponding +`Makefile.in', doing `@VAR@' and `ac_include' substitutions). + + `configure' is the best place to control the configuration, +compilation, and installed location of the software, either via +command-line options, or by setting environment variables before +invoking it. For example, you can disable `mktexpk' by default with +the option `--disable-mktexpk'. *Note configure options::. + +* Menu: + +* configure shells:: +* configure options:: +* configure environment:: +* configure scenarios:: +* Shared library:: + + +File: kpathsea.info, Node: configure shells, Next: configure options, Up: Running configure + +2.2.4.1 `configure' shells +.......................... + +Considerable effort has gone into trying to ensure that the `configure' +scripts can be run by most Bourne shell variants. If `sh' runs into +trouble, your best bet is to use Bash, the GNU Bourne-again shell +(*note Top: (bash)Top.). + + Bourne shell variants for which problems have been reported in the +past are: +`ksh' + Old versions of the Korn shell may fail to handle the scripts. + The Korn shell may be installed as `/bin/sh' on AIX, in which case + `/bin/bsh' may serve instead. + +`ash' + Old versions of ash are unable to handle the scripts. Ash is + sometimes installed as `/bin/sh' on NetBSD, FreeBSD, and Linux + systems. `/bin/bash' should be available for those systems, but + might not be part of a default installation. + +`Ultrix /bin/sh' + `/bin/sh' under Ultrix is a DEC-grown shell that is notably + deficient in many ways. `/bin/sh5' may be necessary. + + +File: kpathsea.info, Node: configure options, Next: configure environment, Prev: configure shells, Up: Running configure + +2.2.4.2 `configure' options +........................... + +For a complete list of all `configure' options, run `configure --help' +or see *note Running `configure' scripts: (autoconf)Invoking configure, +(a copy is in the file `kpathsea/README.CONFIGURE'). The generic +options are listed first in the `--help' output, and the +package-specific options come last. The environment variables +`configure' pays attention to are listed below. + + Options particularly likely to be useful are `--prefix', +`--datadir', and the like; see *note configure scenarios::. + + This section gives pointers to descriptions of the `--with' and +`--enable' options to `configure' that Kpathsea-using programs accept. + +`--without-mktexmf-default' +`--without-mktexpk-default' +`--without-mktextfm-default' +`--with-mktextex-default' + Enable or disable the dynamic generation programs. *Note mktex + configuration::. + +`--enable-shared' + Build Kpathsea as a shared library, and link against it. Also + build the usual static library. *Note Shared library::. + +`--disable-static' + Build only the shared library. Implies `--enable-shared'. + +`--enable-maintainer-mode' + Enables make targets that are useful for the maintainer and likely + to be a pain for anyone else; the makefiles created when this + option is enabled may not work at all for you. You have been + warned. + + +File: kpathsea.info, Node: configure environment, Next: configure scenarios, Prev: configure options, Up: Running configure + +2.2.4.3 `configure' environment +............................... + +`configure' uses the value of the following environment variables in +determining your system's characteristics, and substitutes for them in +Makefile's: + +`CC' + The compiler to use: default is `gcc' if it's installed, otherwise + `cc'. + +`CFLAGS' + Options to give the compiler: default is `-g -O2' for `gcc', `-g' + otherwise. `CFLAGS' comes after any other options. You may need + to include `-w' here if your compilations commonly have useless + warnings (e.g., `NULL redefined'), or `configure' may fail to + detect the presence of header files (it takes the messages on + standard error to mean the header file doesn't exist). + +`CPPFLAGS' + Options to pass to the compiler preprocessor; this matters most for + configuration, not the actual source compilation. The `configure' + script often does only preprocessing (e.g., to check for the + existence of #include files), and `CFLAGS' is not used for this. + You may need to set this to something like + `-I/usr/local/include/wwwhatever' if you have the libwww library + installed for hyper-xdvik (see `xdvik/INSTALL'). + +`DEFS' + Additional preprocessor options, but not used by `configure'. + Provided for enabling or disabling program features, as documented + in the various program-specific installation instructions. `DEFS' + comes before any compiler options included by the distribution + `Makefile's or by `configure'. + +`LDFLAGS' + Additional options to give to the loader. `LDFLAGS' comes before + any other linker options. + +`LIBS' + Additional libraries to link with. + + +File: kpathsea.info, Node: configure scenarios, Next: Shared library, Prev: configure environment, Up: Running configure + +2.2.4.4 `configure' scenarios +............................. + +Here are some common installation scenarios: + + * Including X support in Metafont. This is disabled by default, + since many sites have no use for it, and it's a leading cause of + configuration problems. + configure --with-x + + * Putting the binaries, TeX files, GNU info files, etc. into a single + TeX hierarchy, say `/here/texmf', requires overriding defaults in + `configure': + configure --prefix=/here/texmf --datadir=/here + + * You can compile on multiple architectures simultaneously either by + building symbolic link trees with the `lndir' script from the X11 + distribution, or with the `--srcdir' option: + configure --srcdir=SRCDIR + + * If you are installing binaries for multiple architectures into a + single hierarchy, you will probably want to override the default + `bin' and `lib' directories, something like this: + configure --prefix=TEXMF --datadir=TEXMF \ + --bindir=TEXMF/ARCH/bin --libdir=TEXMF/ARCH/lib + make texmf=TEXMF + (Unless you make provisions for architecture-specific files in + other ways, e.g., with Depot or an automounter.) + + * To compile with optimization (to compile without debugging, remove + the `-g'): + env CFLAGS="-g -O" sh configure ... + For a potential problem if you optimize, see *note TeX or Metafont + failing: TeX or Metafont failing. + + +File: kpathsea.info, Node: Shared library, Prev: configure scenarios, Up: Running configure + +2.2.4.5 Shared library +...................... + +You can compile Kpathsea as a shared library on a few systems, by +specifying the option `--enable-shared' when you run `configure'. + + The main advantage in doing this is that the executables can then +share the code, thus decreasing memory and disk space requirements. + + On some systems, you can record the location of shared libraries in a +binary, usually by giving certain options to the linker. Then +individual users do not need to set their system's environment variable +(e.g., `LD_LIBRARY_PATH') to find shared libraries. If you want to do +this, you will need to add the necessary options to `LDFLAGS' yourself; +for example, on Solaris, include something like `-R${prefix}/lib', on +IRIX or Linux, use `-rpath${prefix}/lib'. (Unfortunately, making this +happen by default is very difficult, because of interactions with an +existing installed shared library.) + + +File: kpathsea.info, Node: Running make, Next: Installing files, Prev: Running configure, Up: Custom installation + +2.2.5 Running `make' +-------------------- + +`make' (still in the top-level directory). This also creates the +`texmf.cnf' and `paths.h' files that define the default search paths, +and (by default) the `plain' and `latex' TeX formats. + + You can override directory names and other values at `make'-time. +`make/paths.make' lists the variables most commonly reset. For +example, `make default_texsizes=600' changes the list of fallback +resolutions. + + You can also override each of `configure''s environment variables +(*note configure environment::). The Make variables have the same +names. + + Finally, you can supply additional options via the following +variables. (`configure' does not use these.) + +`XCPPFLAGS' +`XDEFS' + Preprocessor options. + +`XCFLAGS' + Compiler options. + +`XLDFLAGS' + Loader options (included at beginning of link commands). + +`XLOADLIBES' + More loader options (included at end of link commands). + +`XMAKEARGS' + Additional Make arguments passed to all sub-`make''s. You may need + to include assignments to the other variables here via `XMAKEARGS'; + for example: `make XMAKEARGS="CFLAGS=-O XDEFS=-DA4"'. + + It's generally a bad idea to use a different compiler (`CC') or +libraries (`LIBS') for compilation than you did for configuration, +since the values `configure' determined may then be incorrect. + + Adding compiler options to change the "universe" you are using +(typically BSD vs. system V) is generally a cause of trouble. It's +best to use the native environment, whatever that is; `configure' and +the software usually adapt best to that. In particular, under Solaris +2.x, you should not use the BSD-compatibility library (`libucb') or +include files (`ucbinclude'). + + If you want to use the Babel LaTeX package for support of non-English +typesetting, you need to modify some files before making the LaTeX +format. See the file `install.txt' in the Babel distribution. + + +File: kpathsea.info, Node: Installing files, Next: Cleaning up, Prev: Running make, Up: Custom installation + +2.2.6 Installing files +---------------------- + +The basic command is the usual `make install'. For security issues, +*note Security::. + + The first time you install any manual in the GNU Info system, you +should add a line (you choose where) to the file `dir' in your +`$(infodir)' directory. Sample text for this is given near the top of +the Texinfo source files (`kpathsea/kpathsea.texi', +`dvipsk/dvips.texi', and `web2c/doc/web2c.texi'). If you have a recent +version of the GNU Texinfo distribution installed +(`ftp://prep.ai.mit.edu/pub/gnu/texinfo-3.9.tar.gz' or later), this +should happen automatically. + + On the offchance that this is your first Info installation, the +`dir' file I use is included in the distribution as `etc/dir-example'. + + You may wish to use one of the following targets, especially if you +are installing on multiple architectures: + * `make install-exec' to install in architecture-dependent + directories, i.e., ones that depend on the `$(exec_prefix)' Make + variable. This includes links to binaries, libraries, etc., not + just "executables". + + * `make install-data' to install in architecture-independent + directories, such as documentation, configuration files, pool + files, etc. + + If you use the Andrew File System, the normal path (e.g., +PREFIX/bin) only gets you to a read-only copy of the files, and you +must specify a different path for installation. The best way to do this +is by setting the `prefix' variable on the `make' command line. The +sequence becomes something like this: + configure --prefix=/whatever + make + make install prefix=/afs/.SYSTEM.NAME/system/1.3/@sys/whatever + With AFS, you will definitely want to use relative filenames in +`ls-R' (*note Filename database::), not absolute filenames. This is +done by default, but check anyway. + + +File: kpathsea.info, Node: Cleaning up, Next: Filename database generation, Prev: Installing files, Up: Custom installation + +2.2.7 Cleaning up +----------------- + +The basic command is `make distclean'. This removes all files created +by the build. + + Alternatively, + * `make mostlyclean' if you intend to compile on another + architecture. For Web2C, since the generated C files are portable, + they are not removed. If the `lex' vs. `flex' situation is going + to be different on the next machine, `rm web2c/lex.yy.c'. + + * `make clean' to remove files created by compiling, but leave + configuration files and Makefiles. + + * `make maintainer-clean' to remove everything that the Makefiles can + rebuild. This is more than `distclean' removes, and you should + only use it if you are thoroughly conversant with (and have the + necessary versions of) Autoconf. + + * `make extraclean' to remove other junk, e.g., core files, log + files, patch rejects. This is independent of the other `clean' + targets. + + +File: kpathsea.info, Node: Filename database generation, Next: mktex scripts, Prev: Cleaning up, Up: Custom installation + +2.2.8 Filename database generation +---------------------------------- + +You will probably want to set up a `cron' entry on the appropriate +machine(s) to rebuild the filename database nightly or so, as in: + 0 0 * * * cd TEXMF && /BINDIR/mktexlsr + *Note Filename database::. + + Although the `mktex...' scripts make every effort to add +newly-created files on the fly, it can't hurt to make sure you get a +fresh version every so often. + + +File: kpathsea.info, Node: mktex scripts, Next: Installation testing, Prev: Filename database generation, Up: Custom installation + +2.2.9 `mktex' scripts +--------------------- + +If Kpathsea cannot otherwise find a file, for some file types it is +configured by default to invoke an external program to create it +dynamically (*note mktex configuration::). This is most 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. Trying to build all fonts in advance is therefore +impractical, if not impossible. + + 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: + +* mktex configuration:: +* mktex script names:: +* mktex script arguments:: + + +File: kpathsea.info, Node: mktex configuration, Next: mktex script names, Up: mktex scripts + +2.2.9.1 `mktex' configuration +............................. + +The following file types can run an external program to create missing +files: `pk', `tfm', `mf', `tex'; the scripts are named `mktexpk', +`mktextfm', `mktexmf', and `mktextex'. + + 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-mktexmf-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::). + + 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 Mode Structure: (coreutils)Mode Structure.). + This feature is silently ignored on non-Unix platforms (e.g. + Windows/NT and MS-DOS) which don't support similar functionality. + This feature is enabled by default. + +`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 + +2.2.9.2 `mktex' script names +............................ + +The following table shows the default name of the script for each +possible file types. (The source is the variable `kpse_make_specs' in +`kpathsea/tex-make.c'.) + +`mktexpk' + Glyph fonts. + +`mktextex' + TeX input files. + +`mktexmf' + Metafont input files. + +`mktextfm' + TFM files. + +These names are 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 + +2.2.9.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 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: Installation testing, Prev: mktex scripts, Up: Custom installation + +2.2.10 Installation testing +--------------------------- + +Besides the tests listed in *note Simple installation::, you can try +running `make check'. This includes the torture tests (trip, trap, and +mptrap) that come with Web2c (*note Triptrap: (web2c)Triptrap.). + + +File: kpathsea.info, Node: Security, Next: TeX directory structure, Prev: Custom installation, Up: Installation + +2.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 tex invocation: (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 Option +details: (dvips)Option details, the xdvi man page, and *note tex +invocation: (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: unixtex.ftp, Prev: Security, Up: Installation + +2.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 standard is available +as `ftp://prep.ai.mit.edu/pub/gnu/standards/standards.texi' and +mirrors. The TDS document is available from `CTAN:/tex-archive/tds' +(*note unixtex.ftp::). + + You can change the default paths in many ways (*note Changing search +paths::). One common desire is to put everything (binaries and all) +under a single top-level directory such as `/usr/local/texmf' or +`/opt/texmf'--in the terms used below, make PREFIX and TEXMF the same. +For specific instructions on doing that, see *note configure +scenarios::. + + 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: unixtex.ftp, Next: Reporting bugs, Prev: TeX directory structure, Up: Installation + +2.5 `unixtex.ftp': Obtaining TeX +================================ + +This is `ftp://ftp.tug.org/tex/unixtex.ftp', last updated 26 December +2003. Also available as `http://www.tug.org/unixtex.ftp'. The IP +address is currently `[130.225.2.178]'. It is also in Kpathsea source +distributions as `etc/unixtex.ftp' (although the network version is +usually newer). Mail <tex-k@mail.tug.org> with comments or questions. + + Following are general instructions for Unix or other sites who wish +to acquire the Web2c distribution, (plain) TeX, LaTeX (2e), BibTeX, +Metafont, MetaPost, DVI processors for the X window system, PostScript, +the PCL language in the HP LaserJet, and related programs. They are +oriented towards building from the original sources, though some +information on alternative packages is included in the last section. +See also `http://www.tug.org/web2c/', the Web2c and Kpathsea home page. + + Please note that the Web2c distribution is a bare-bones distribution +in source form, and building a complete installation from it is a +non-trivial matter. For most uses, it is a better idea to install a +distribution with pre-packaged binaries for your platform. The +principal example of such a distribution is TeX Live +(`http://www.tug.org/texlive/'), which is based on the Web2c sources. + + Please consider joining the TeX Users Group (TUG) or another user +group of your choice to help support the maintenance and development of +the programs you retrieve. See `http://www.tug.org/join.html' for +information and the membership registration form, and +`http://www.tug.org/usergroups.html' for a listing of all user groups. + + For actual installation instructions after obtaining the necessary +sources, see *note Installation::. A copy is in the distribution file +`kpathsea/INSTALL'. + +* Menu: + +* Electronic distribution:: CTAN and so forth. +* CD-ROM distribution:: +* Other TeX packages:: + + +File: kpathsea.info, Node: Electronic distribution, Next: CD-ROM distribution, Up: unixtex.ftp + +2.5.1 Electronic distribution +----------------------------- + +In many places we refer to CTAN:. This is _both_ a host name and a +directory name. Here are the primary locations: + + `ftp://ctan.tug.org/tex-archive/' (Vermont, USA) + `ftp://ftp.dante.de/tex-archive/' (Germany) + `ftp://ftp.tex.ac.uk/tex-archive/' (England) + +CTAN has many mirrors worldwide; see the top-level file +`README.mirrors' from one of the sites above or see +`http://www.tug.org/CTAN.sites'. + + You can also access CTAN via the World Wide Web, electronic mail, or +NFS. The same `README.mirrors' file explains how. + + You will need to retrieve some or all of the following archives, +depending on your needs (don't forget to set binary mode for file +transfers): + +`CTAN:/systems/web2c/web.tar.gz' + The original WEB source files, written primarily by Don Knuth. + Required unless you already have this `web' version. (The WEB + sources change irregularly with respect to Web2c itself.) Unpacks + into `web2c-VERSION'. + +`CTAN:/systems/web2c/web2c.tar.gz' + The Web2c system. Required. Also unpacks into `web2c-VERSION'. + +`CTAN:/systems/web2c/web2c-etex.tar.gz' + Additions to the Web2c system for building e-TeX. Optional. + Unpacks into `web2c-VERSION'. + +`CTAN:/systems/web2c/etexlib.tar.gz' + Additions to the texmf tree needed to build e-TeX. Optional. + Unpacks into `texmf/'. + +`CTAN:/systems/web2c/etexdoc.tar.gz' + Documentation for e-TeX as an addition to the texmf tree. + Optional. Unpacks into `texmf/'. + +`CTAN:/systems/web2c/web2c-omega.tar.gz' + Additions to the Web2c system for building Omega. Optional. + Unpacks into `web2c-VERSION'. + +`CTAN:/systems/web2c/omegalib.tar.gz' + Additions to the texmf tree needed to build Omega. Optional. + Unpacks into `texmf/'. + +`CTAN:/systems/web2c/omegadoc.tar.gz' + Documentation for Omega as an addition to the texmf tree. + Optional. Unpacks into `texmf/'. + +`CTAN:/systems/web2c/web2c-pdftex.tar.gz' + Additions to the Web2c system for building pdfTeX. Optional. + Unpacks into `web2c-VERSION'. + +`CTAN:/systems/web2c/pdftexlib.tar.gz' + Additions to the texmf tree needed to build pdfTeX. Optional. + Unpacks into `texmf/'. + +`CTAN:/dviware/xdvik/xdvik.tar.gz' + X window system DVI previewer. Unpacks into `xdvik-VERSION'. + Optional. + + Additional drivers, macro files, and other support are needed to +build a working system. These are available in teTeX. + + All that said, the originating host for the software above is +`ftp.tug.org'. You can retrieve these distributions (but not much +else) from the `tex/' directory on that host. + + +File: kpathsea.info, Node: CD-ROM distribution, Next: Other TeX packages, Prev: Electronic distribution, Up: unixtex.ftp + +2.5.2 CD-ROM distribution +------------------------- + +Numerous organizations distribute various TeX CD-ROM's (and DVD's): + + * Virtually all the TeX user groups collaborate to produce the `TeX + Live' distribution once a year; see `http://www.tug.org/texlive/' + for more information. + + * The Free Software Foundation's `Source Code CD-ROM' contains the + minimal TeX source distribution described in the previous section + (i.e., enough to print GNU documentation); email <gnu@gnu.org>. + + * Most Linux distributions include some TeX package based on Web2c; + see the Linux documentation file `Distribution-HOWTO' for a + comparison of Linux distributions, available (for example) via + `http://www.linux.org'. + + If you know of additional TeX distributions to add to this list, +please inform <tex-k@mail.tug.org>. + + +File: kpathsea.info, Node: Other TeX packages, Prev: CD-ROM distribution, Up: unixtex.ftp + +2.5.3 Other TeX packages +------------------------ + +Many other TeX implementations are available in `CTAN:/systems', +including ready-to-run distributions for Unix, Amiga, Acorn, VMS, +Macintosh, DOS, and Windows (in various forms). Although Web2c has +support in the source code for many operating systems, and in fact some +of the other distributions are based on it, it's unlikely to work as +distributed on anything but Unix. (Please contribute improvements!) + + The principal user-oriented Unix distribution based on Web2c is the +teTeX distribution. It includes complete sources, and runs on all +modern Unix variants, including Linux. It contains many TeX-related +programs besides those in the core Web2c. + + The host labrea.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 build your TeX library tree ab initio, +it is more reliable and less work to retrieve these files as part of +the above packages. In any case, labrea is not the canonical source for +anything except what was created by Stanford TeX project, so do not +rely on all the files available at that ftp site being up-to-date. + + +File: kpathsea.info, Node: Reporting bugs, Prev: unixtex.ftp, Up: Installation + +2.6 Reporting bugs +================== + +(A copy of this chapter is in the file `kpathsea/BUGS'.) + +If you have problems or suggestions, please report them to +<tex-k@mail.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 + +2.6.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@mail.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 number), + compiler, and `make' program you are using (the output of `uname + -a' is a start on the first two, though often incomplete). If the + bug involves the X window system, include X version and supplier + information as well (examples: X11R6 from MIT; X11R4 from HP; + OpenWindows 3.3 bundled with SunOS 4.1.4). + + * 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 necessary, 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, available from + `ftp://prep.ai.mit.edu/pub/gnu'). 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 + +2.6.2 Mailing lists +------------------- + +Web2c and Kpathsea in general are discussed on the mailing list +<tex-k@mail.tug.org>. To join, email <tex-k-request@mail.tug.org> with +a line consisting of + + subscribe YOU@YOUR.PREFERRED.EMAIL.ADDRESS + +in the body of the message. + + You do not need to join to submit a report, nor will it affect +whether you get a response. There is no Usenet newsgroup equivalent +(if you can be the one to set this up, email `tex-k-request'). Traffic +on the list is fairly light, and is mainly bug reports and enhancement +requests to the software. The best way to decide if you want to join +or not is read some of the archives from +`ftp://ftp.tug.org/mail/archives/tex-k/'. + + 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 only want announcements of new releases, not bug reports and +discussion, join <tex-archive@math.utah.edu> (via mail to +<tex-archive-request@math.utah.edu>). + + If you are looking for general TeX help, such as how to use LaTeX, +please use the mailing list <info-tex@shsu.edu> mailing list, which is +gatewayed to the `comp.text.tex' Usenet newsgroup (or post to the +newsgroup; the gateway is bidirectional). + + +File: kpathsea.info, Node: Debugging, Next: Logging, Prev: Mailing lists, Up: Reporting bugs + +2.6.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 variable `kpathsea_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 can _not_ 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 + +2.6.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 + +2.6.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. + +* Empty Makefiles:: When configure produces empty makefiles. +* XtStrings:: When _XtStrings is undefined. +* dlopen:: When dlopen is undefined. +* ShellWidgetClass:: For dynamic linking troubles under OpenWindows. +* Pointer combination warnings:: For old compilers that don't grok char *. + + +File: kpathsea.info, Node: Unable to find files, Next: Slow path searching, Up: Common problems + +2.6.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 + +2.6.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 + +2.6.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 Config files: +(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 `ftp://ftp.tug.org/tex/modes.mf' 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 inimf invocation: (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, Next: Empty Makefiles, Prev: Unable to generate fonts, Up: Common problems + +2.6.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. + + Insufficient swap space may also cause core dumps or other erratic +behavior. + + 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 Bugs: +(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. Things are not +helped by all-too-common bugs in the debugger itself. Good luck. + + One known cause of trouble is the way arrays are handled. Some of +the Pascal arrays have a lower index other than 0, and the C code will +take the pointer to the allocated memory, subtract the lower index, and +use the resulting pointer for the array. While this trick often works, +ANSI C doesn't guarantee that it will. It it known to fail on HP-UX 10 +mchines when the native compiler is used, unless the `+u' compiler +switch was specified. Using GCC will work on this platform as well. + + +File: kpathsea.info, Node: Empty Makefiles, Next: XtStrings, Prev: TeX or Metafont failing, Up: Common problems + +2.6.5.5 Empty Makefiles +....................... + +On some systems (NetBSD, FreeBSD, AIX 4.1, and Mach10), `configure' may +fail to properly create the Makefiles. Instead, you get an error which +looks something like this: + + prompt$ ./configure + ... + creating Makefile + sed: 1: "\\@^ac_include make/pat ...": \ can not be used as a string delimiter + + So far as I know, the bug here is in `/bin/sh' on these systems. I +don't have access to a machine running any of them, so if someone can +find a workaround that avoids the quoting bug, I'd be most grateful. +(Search for `ac_include' in the `configure' script to get to the +problematic code.) + + It should work to run `bash configure', instead of using `/bin/sh'. +You can get Bash from `ftp://prep.ai.mit.edu/pub/gnu' and mirrors. + + Another possible cause (reported for NeXT) is a bug in the `sed' +command. In that case the error may look like this: + + Unrecognized command: \@^ac_include make/paths.make@r make/paths.make + + In this case, installing GNU `sed' should solve the problem. You +can get GNU `sed' from the same places as Bash. + + +File: kpathsea.info, Node: XtStrings, Next: dlopen, Prev: Empty Makefiles, Up: Common problems + +2.6.5.6 `XtStrings' +................... + +You may find that linking X programs results in an error from the linker +that `XtStrings' is undefined, something like this: + + gcc -o virmf ... + .../x11.c:130: undefined reference to `XtStrings' + + This generally happens because of a mismatch between the X include +files with which you compiled and the X libraries with which you linked; +often, the include files are from MIT and the libraries from Sun. + + The solution is to use the same X distribution for compilation and +linking. Probably `configure' was unable to guess the proper +directories from your installation. You can use the `configure' +options `--x-includes=PATH' and `--x-libraries=PATH' to explicitly +specify them. + + +File: kpathsea.info, Node: dlopen, Next: ShellWidgetClass, Prev: XtStrings, Up: Common problems + +2.6.5.7 `dlopen' +................ + +(This section adapted from the file `dlsym.c' in the X distribution.) + + The `Xlib' library uses the standard C function `wcstombs'. Under +SunOS 4.1, `wcstombs' uses the `dlsym' interface defined in `libdl.so'. +Unfortunately, the SunOS 4.1 distribution does not include a static +`libdl.a' library. + + As a result, if you try to link an X program statically under SunOS, +you may get undefined references to `dlopen', `dlsym', and `dlclose'. +One workaround is to include these definitions when you link: + + void *dlopen() { return 0; } + void *dlsym() { return 0; } + int dlclose() { return -1; } + +These are contained in the `dlsym.c' file in the MIT X distribution. + + +File: kpathsea.info, Node: ShellWidgetClass, Next: Pointer combination warnings, Prev: dlopen, Up: Common problems + +2.6.5.8 `ShellWidgetClass' +.......................... + +(This section adapted from the comp.sys.sun.admin FAQ.) + + If you are linking with Sun's OpenWindows libraries in SunOS 4.1.x, +you may get undefined symbols `_get_wmShellWidgetClass' and +`_get_applicationShellWidgetClass' when linking. This problem does not +arise using the standard MIT X libraries under SunOS. + + The cause is bugs in the `Xmu' shared library as shipped from Sun. +There are several fixes: + + * Install the free MIT distribution from `ftp.x.org' and mirrors. + + * Get the OpenWindows patches listed below. + + * Statically link the `Xmu' library into the executable. + + * Avoid using `Xmu' at all. If you are compiling Metafont, see *note + Online Metafont graphics: (web2c)Online Metafont graphics. If you + are compiling Xdvi, see the `-DNOTOOL' option in `xdvik/INSTALL'. + + * Ignore the errors. The binary runs fine regardless. + + + Here is the information for getting the two patches: + + Patch ID: 100512-02 + Bug ID's: 1086793, 1086912, 1074766 + Description: 4.1.x OpenWindows 3.0 `libXt' jumbo patch + + Patch ID: 100573-03 + Bug ID: 1087332 + Description: 4.1.x OpenWindows 3.0 undefined symbols when using shared `libXmu'. + + The way to statically link with `libXmu' depends on whether you are +using a Sun compiler (e.g., `cc') or `gcc'. If the latter, alter the +`x_libs' Make variable to include + + -static -lXmu -dynamic + + If you are using the Sun compiler, use `-Bstatic' and `-Bdynamic'. + + +File: kpathsea.info, Node: Pointer combination warnings, Prev: ShellWidgetClass, Up: Common problems + +2.6.5.9 Pointer combination warnings +.................................... + +When compiling with old C compilers, you may get some warnings about +"illegal pointer combinations". These are spurious; just ignore them. +I decline to clutter up the source with casts to get rid of them. + + +File: kpathsea.info, Node: Path searching, Next: TeX support, Prev: Installation, Up: Top + +3 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. + +* Menu: + +* Searching overview:: Basic scheme for searching. +* Path sources:: Where search paths can be defined. +* Path expansion:: Special constructs in search paths. +* 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 + +3.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 may 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 never 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. This avoids possibly-expensive processing of path +specifications that are never needed on a particular run. (Unless the +search explicitly requested all matches.) + + 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. + + 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 read permission (for +example, a `lost+found'). 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 + +3.2 Path sources +================ + +A search path can come from many sources. In the order in which +Kpathsea uses them: + + 1. 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 Config files: (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 + +3.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'. + + 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 `%' and continue to the end of the line. + + * 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 must 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, 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'. This allows different + flavors of TeX to have different search paths, for example. + + * VALUE may contain any characters except `%' and `@'. (These + restrictions are only necessary because of the processing done on + `texmf.cnf' at build time, so you can stick those characters in + after installation if you have to.) 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; this is useful to write a + single `texmf.cnf' which can be used under both Unix and NT. + + * 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 + + Although this format has obvious similarities 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. But there seemed little advantage to doing 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 implementation of all this is in `kpathsea/cnf.c'. + + +File: kpathsea.info, Node: Path expansion, Next: Filename database, Prev: Path sources, Up: Path searching + +3.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 + +3.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 + +3.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 + +3.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. + + 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 + +3.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 DOS 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 in stead of the comma. The last +example could have been written `x{A:B}{1:2}y'. + + Brace expansion is implemented in the source file +`kpathsea/expand.c'. It is a modification of the Bash sources, and is +thus covered by the GNU General Public License, rather than the Library +General Public License that covers the rest of Kpathsea. + + +File: kpathsea.info, Node: KPSE_DOT expansion, Next: Subdirectory expansion, Prev: Brace expansion, Up: Path expansion + +3.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 + +3.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 `UNIX_ST_LINK' 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 can 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: Filename database, Next: Invoking kpsewhich, Prev: Path expansion, Up: Path searching + +3.4 Filename database (`ls-R') +============================== + +Kpathsea goes to some lengths to minimize disk accesses for searches +(*note Subdirectory expansion::). Nevertheless, at installations with +enough directories, searching each possible directory for a given file +can take an excessively long time (depending on the speed of the disk, +whether it's NFS-mounted, how patient you are, etc.). + + In practice, a font tree containing the standard PostScript and PCL +fonts is large enough for searching to be noticeably slow on typical +systems these days. Therefore, Kpathsea can use an externally-built +"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'. This can be helpful to adapt to "8.3" +filename conventions in source files. + + 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 + +3.4.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); most sites have only one hierarchy. +Kpathsea looks for `ls-R' files along the `TEXMFDBS' path, so that +should presumably match the list of hierarchies. + + 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. + + 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. + + Because the database may be out-of-date for a particular run, if a +file is not found in the database, by default Kpathsea goes ahead and +searches the disk. If a particular path element begins with `!!', +however, _only_ the database will be searched for that element, never +the disk. If the database does not exist, nothing will be searched. +Because this can surprise users ("I see the font `foo.tfm' when I do an +`ls'; why can't Dvips find it?"), it is not in any of the default +search paths. + + +File: kpathsea.info, Node: Filename aliases, Next: Database format, Prev: ls-R, Up: Filename database + +3.4.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 + +3.4.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 + +3.5 `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. +* Auxiliary tasks:: Path and variable expansion. +* Standard options:: --help and --version. + + +File: kpathsea.info, Node: Path searching options, Next: Auxiliary tasks, Up: Invoking kpsewhich + +3.5.1 Path searching options +---------------------------- + +Kpsewhich looks up each non-option argument on the command line as a +filename, and returns the first file found. There is no option to +return all the files with a particular name (you can run the Unix +`find' utility for that, *note Invoking find: (findutils)Invoking +find.). + + Various options alter the path searching behavior: + +`--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. + +`--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.) + + When the filename being searched for is `config.ps', the format is + automatically switched to `dvips config'. Similarly, when the + filename is `pdftex.cfg', the format is switched to `pdftex + config' (although `pdftex.cfg' is not used any more; look for + `pdftexconfig.tex' instead.) + + Here's the current list of recognized names and the associated + suffixes. *Note Supported file formats::, for more information on + each of these. + gf: gf + pk: pk + bitmap font + afm: .afm + base: .base + bib: .bib + bst: .bst + cnf: .cnf + ls-R: ls-R + fmt: .fmt + map: .map + mem: .mem + mf: .mf + mfpool: .pool + mft: .mft + mp: .mp + mppool: .pool + MetaPost support + ocp: .ocp + ofm: .ofm .tfm + opl: .opl + otp: .otp + ovf: .ovf + ovp: .ovp + graphic/figure: .eps .epsi + tex: .tex + TeX system documentation + texpool: .pool + TeX system sources + PostScript header/font: .pro + Troff fonts + tfm: .tfm + type1 fonts: .pfa .pfb + vf: .vf + dvips config + ist: .ist + truetype fonts: .ttf .ttc + type42 fonts + web2c files + other text files + other binary files + misc fonts + web: .web + cweb: .w .web + enc: .enc + cmap: .cmap + sfd: .sfd + opentype fonts + pdftex config + lig files: .lig + texmfscripts + + 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. The + only values that make sense for FILETYPE are `pk', `mf', `tex', + and `tfm'. By default, all are off in Kpsewhich. *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. 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::). + + +File: kpathsea.info, Node: Auxiliary tasks, Next: Standard options, Prev: Path searching options, Up: Invoking kpsewhich + +3.5.2 Auxiliary tasks +--------------------- + +Kpsewhich provides some additional features not strictly related to path +lookup: + + * `--debug=NUM' sets the debugging options to NUM. *Note + Debugging::. + + * `--var-value=VARIABLE' output the value of VARIABLE. + + * `--expand-braces=STRING' outputs the variable and brace expansion + of STRING. *Note Path expansion::. + + * `--expand-var=STRING' outputs the variable expansion of STRING. + For example, the `mktex...' scripts run `kpsewhich + --expand-var='$TEXMF'' to find the root of the TeX system + hierarchy. *Note Path expansion::. + + * `--expand-path=STRING' outputs 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', next. + + 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' in the previous section. + + * `--show-path=NAME' shows 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. + + + +File: kpathsea.info, Node: Standard options, Prev: Auxiliary tasks, Up: Invoking kpsewhich + +3.5.3 Standard options +---------------------- + +Kpsewhich accepts the standard GNU options: + + * `--help' prints a help message on standard output and exits. + + * `--version' prints the Kpathsea version number and exits. + + +File: kpathsea.info, Node: TeX support, Next: Programming, Prev: Path searching, Up: Top + +4 TeX support +************* + +Although the basic features in Kpathsea can be used for any type of path +searching, it came about (like all libraries) 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 supposedly 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 filenames, not file contents--if a GF file +is 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. + + +File: kpathsea.info, Node: Supported file formats, Next: File lookup, Up: TeX support + +4.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. + +`afm' + (Adobe font metrics, *note Metric files: (dvips)Metric files.) + `AFMFONTS'; suffix `.afm'. + +`base' + (Metafont memory dump, *note Memory dumps: (web2c)Memory dumps.) + `MFBASES', `TEXMFINI'; suffix `.base'. + +`bib' + (BibTeX bibliography source, *note bibtex invocation: + (web2c)bibtex invocation.) `BIBINPUTS', `TEXBIB'; suffix `.bib'. + +`bst' + (BibTeX style file, *note Basic BibTeX style files: (web2c)Basic + BibTeX style files.) `BSTINPUTS'; suffix `.bst'. + +`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 Config files: + (dvips)Config files.) `TEXCONFIG'. + +`enc files' + (encoding vectors) `ENCFONTS'; suffix `.enc'. + +`fmt' + (TeX memory dump, *note Memory dumps: (web2c)Memory dumps.) + `TEXFORMATS', `TEXMFINI'; suffix `.fmt'. + +`gf' + (generic font bitmap, *note Glyph files: (dvips)Glyph files.) + `PROGRAMFONTS', `GFFONTS', `GLYPHFONTS', `TEXFONTS'; suffix `gf'. + +`graphic/figure' + (Encapsulated PostScript figures, *note PostScript figures: + (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 Memory dumps: (web2c)Memory dumps.) + `MPMEMS', `TEXMFINI'; suffix `.mem'. + +`MetaPost support' + (MetaPost support files, used by DMP; *note dmp invocation: + (web2c)dmp invocation.) `MPSUPPORT'. + +`mf' + (Metafont source, *note mf invocation: (web2c)mf invocation.) + `MFINPUTS'; suffix `.mf'; dynamic creation program: `mktexmf'. + +`mfpool' + (Metafont program strings, *note pooltype invocation: + (web2c)pooltype invocation.) `MFPOOL', `TEXMFINI'; suffix `.pool'. + +`mft' + (`MFT' style file, *note mft invocation: (web2c)mft invocation.) + `MFTINPUTS'; suffix `.mft'. + +`misc fonts' + (font-related files that don't fit the other categories) + `MISCFONTS' + +`mp' + (MetaPost source, *note mpost invocation: (web2c)mpost invocation.) + `MPINPUTS'; suffix `.mp'. + +`mppool' + (MetaPost program strings, *note pooltype invocation: + (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 Glyph files: (dvips)Glyph files.) + `PROGRAMFONTS' (PROGRAM being `XDVI', etc.), `PKFONTS', `TEXPKS', + `GLYPHFONTS', `TEXFONTS'; suffix `pk'; dynamic creation program: + `mktexpk'. + +`PostScript header' + (downloadable PostScript, *note Header files: (dvips)Header files.) + `TEXPSHEADERS', `PSHEADERS'; additional suffix `.pro'. + +`subfont definition files' + (subfont definition files) `SFDFONTS' suffix `.sfd'. + +`tex' + (TeX source, *note tex invocation: (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 + tree) `TEXMFSCRIPTS'. + +`texpool' + (TeX program strings, *note pooltype invocation: (web2c)pooltype + invocation.) `TEXPOOL', `TEXMFINI'; suffix `.pool'. + +`tfm' + (TeX font metrics, *note Metric files: (dvips)Metric files.) + `TFMFONTS', `TEXFONTS'; suffix `.tfm'; dynamic creation program: + `mktextfm'. + +`Troff fonts' + (Troff fonts, used by DMP; *note DMP invocation: (web2c)DMP + invocation.) `TRFONTS'. + +`truetype fonts' + (TrueType outline fonts) `TTFONTS'; suffixes `.ttf', `.ttc'. + +`type1 fonts' + (Type 1 PostScript outline fonts, *note Glyph files: (dvips)Glyph + files.) `T1FONTS', `T1INPUTS', `TEXPSHEADERS', `DVIPSHEADERS'; + suffixes `.pfa', `.pfb'. + +`type42 fonts' + (Type 42 PostScript outline fonts) `T42FONTS'. + +`vf' + (virtual fonts, *note Virtual fonts: (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 + +4.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. We postpone searching the disk as + long as possible. Example: given `foo.sty', look for `foo.sty.tex' + before `foo.sty'. This is unfortunate, but allows us to find + `foo.bar.tex' before `foo.bar' if both exist and we were given + `foo.bar'. + + 2. Search for NAME, and if necessary for alternative names found in + the fontmaps. Again we avoid searching the disk if possible. + Example: given `foo', we look for `foo'. + + 3. If the file format defines a program to invoke to create missing + files, run it (*note mktex scripts::). + + This is implemented in the routine `kpse_find_file' in +`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 + +4.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 `kpse_find_glyph_format' 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 + +4.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 + +4.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 `%' and continue to the end of the line. + + * 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 circle fonts equivalent and includes +automatically generated maps for most PostScript fonts available from +various font suppliers. + + circle10 lcircle10 + circle10 lcirc10 + lcircle10 circle10 + lcircle10 lcirc10 + lcirc10 circle10 + lcirc10 lcircle10 + ... + include adobe.map + include apple.map + include bitstrea.map + ... + + Fontmaps are implemented in the file `kpathsea/fontmap.c'. The +Fontname distribution has much more information on font naming (*note +Introduction: (fontname)Introduction.). + + +File: kpathsea.info, Node: Fallback font, Prev: Fontmap, Up: Glyph lookup + +4.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 assigning to the global variable +`kpse_fallback_font' or calling `kpse_init_prog' (*note Calling +sequence::); the default is no fallback font. + + +File: kpathsea.info, Node: Suppressing warnings, Prev: Glyph lookup, Up: TeX support + +4.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: Programming, Next: Index, Prev: TeX support, Up: Top + +5 Programming +************* + +This chapter is for programmers who wish to use Kpathsea. *Note +Introduction::, for the conditions under which you may do so. + +* 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 + +5.1 Programming overview +======================== + +Aside from this manual, your best source of information is the source to +the programs I've modified to use Kpathsea (*note Introduction::). Of +those, Dviljk is probably the simplest, and hence a good place to start. +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. Finally, Kpsewhich is a small +utility program whose sole purpose is to exercise the main +path-searching functionality. + + 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 + +5.2 Calling sequence +==================== + +The typical way to use Kpathsea in your program goes something like +this: + + 1. Call `kpse_set_program_name' with `argv[0]' as the first argument; + the second argument is a string or `NULL'. The second argument is + used by Kpathsea as the program name for the `.PROGRAM' feature of + config files (*note Config files::). If the second argument is + `NULL', the value of the first argument is used. This function + must be called before any other use of the Kpathsea library. + + If necessary, `kpse_set_program_name' sets the global variables + `program_invocation_name' and `program_invocation_short_name'. + These variables are used in the error message macros defined in + `kpathsea/lib.h'. It sets the global 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 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, specifically from a mounted CD-ROM. (You can use + `--expand-var=\$SELFAUTOLOC', etc., to see the values finds.) + + 2. The `kpse_set_progname' is deprecated. A call to + `kpse_set_progname' with `argv[0]' is equivalent to a call of + `kpse_set_program_name' with first argument `argv[0]' and second + argument `NULL'. The function is deprecated because it cannot + ensure that the `.PROGRAM' feature of config files will always + work (*note Config files::). + + 3. Set debugging options. *Note Debugging::. If your program doesn't + have a debugging option already, you can define one and set + `kpathsea_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 `kpse_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 + `kpse_find_FORMAT', defined in `tex-file.h'. These are macros that + expand to a call to `kpse_find_file'. You can call, say, + `kpse_find_tfm' after doing only the first 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 routines are `kpse_find_pk', + `kpse_find_gf' and `kpse_find_glyph', defined in `tex-glyph.h'. + These return 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 + `kpse_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. + + + 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 for +configuring your software if you use Kpathsea; I strongly recommend +using Autoconf regardless. It is available from +`ftp://prep.ai.mit.edu/pub/gnu/'. + + +File: kpathsea.info, Node: Program-specific files, Next: Programming with config files, Prev: Calling sequence, Up: Programming + +5.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 special formats, `kpse_program_text_format' and +`kpse_program_binary_format' exist, which 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 +`kpse_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 + +5.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 VAR from config files, the best way is to call +`kpse_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 variable expansion in the context of a search path +(as opposed to simply retrieving a value) is `kpse_var_expand', also +declared in `kpathsea/variable.h'. It's generally only necessary to +set the search path structure components as explained in the previous +section, rather than using this yourself. + + If for some reason you want to retrieve a value _only_ from a config +file, not automatically looking for a corresponding environment +variable, call `kpse_cnf_get' (declared in `kpathsea/cnf.h') with the +string VAR. + + No initialization calls are needed. + + +File: kpathsea.info, Node: Index, Prev: Programming, Up: Top + +Index +***** + + +* Menu: + +* !! in path specifications: ls-R. (line 52) +* $ expansion: Variable expansion. (line 6) +* --color=tty: ls-R. (line 21) +* --debug=NUM: Auxiliary tasks. (line 9) +* --disable-static: configure options. (line 31) +* --dpi=NUM: Path searching options. + (line 15) +* --enable options: configure options. (line 16) +* --enable-maintainer-mode: configure options. (line 34) +* --enable-shared <1>: Shared library. (line 6) +* --enable-shared: configure options. (line 27) +* --engine=NAME: Path searching options. + (line 20) +* --expand-braces=STRING: Auxiliary tasks. (line 14) +* --expand-path=STRING: Auxiliary tasks. (line 22) +* --expand-var=STRING: Auxiliary tasks. (line 17) +* --format=NAME: Path searching options. + (line 25) +* --help: Standard options. (line 8) +* --interactive: Path searching options. + (line 99) +* --mode=STRING: Path searching options. + (line 110) +* --must-exist: Path searching options. + (line 115) +* --path=STRING: Path searching options. + (line 120) +* --progname=NAME: Path searching options. + (line 129) +* --show-path=NAME: Auxiliary tasks. (line 39) +* --srcdir, for building multiple architectures: configure scenarios. + (line 18) +* --var-value=VARIABLE: Auxiliary tasks. (line 12) +* --version: Standard options. (line 10) +* --with options: configure options. (line 16) +* --with-mktextex-default: mktex configuration. (line 14) +* --without-mktexmf-default: mktex configuration. (line 14) +* --without-mktexpk-default: mktex configuration. (line 14) +* --without-mktextfm-default: mktex configuration. (line 14) +* -1 debugging value: Debugging. (line 23) +* -A option to ls: ls-R. (line 33) +* -Bdynamic: ShellWidgetClass. (line 45) +* -Bstatic: ShellWidgetClass. (line 45) +* -D NUM: Path searching options. + (line 15) +* -dynamic: ShellWidgetClass. (line 43) +* -g, compiling without: configure scenarios. (line 32) +* -L option to ls: ls-R. (line 38) +* -mktex=FILETYPE: Path searching options. + (line 104) +* -no-mktex=FILETYPE: Path searching options. + (line 104) +* -O, compiling with: configure scenarios. (line 32) +* -static: ShellWidgetClass. (line 43) +* . directories, ignored: ls-R. (line 33) +* . files: ls-R. (line 33) +* .2602gf: Unable to generate fonts. + (line 36) +* .afm: Supported file formats. + (line 20) +* .base: Supported file formats. + (line 24) +* .bib: Supported file formats. + (line 28) +* .bst: Supported file formats. + (line 32) +* .cmap: Supported file formats. + (line 36) +* .cnf: Supported file formats. + (line 39) +* .enc: Supported file formats. + (line 51) +* .eps: Supported file formats. + (line 62) +* .epsi: Supported file formats. + (line 62) +* .fmt: Supported file formats. + (line 54) +* .ist: Supported file formats. + (line 67) +* .lig: Supported file formats. + (line 71) +* .map: Supported file formats. + (line 77) +* .mem: Supported file formats. + (line 80) +* .mf: Supported file formats. + (line 88) +* .mft: Supported file formats. + (line 96) +* .mp: Supported file formats. + (line 104) +* .ocp: Supported file formats. + (line 112) +* .ofm: Supported file formats. + (line 116) +* .opl: Supported file formats. + (line 123) +* .otp: Supported file formats. + (line 126) +* .ovf: Supported file formats. + (line 129) +* .ovp: Supported file formats. + (line 132) +* .pfa: Supported file formats. + (line 184) +* .pfb: Supported file formats. + (line 184) +* .pk: Supported file formats. + (line 139) +* .pool: Supported file formats. + (line 92) +* .pro: Supported file formats. + (line 145) +* .rhosts, writable by TeX: Security. (line 10) +* .sfd: Supported file formats. + (line 149) +* .tex: Supported file formats. + (line 152) +* .tex file, included in ls-R: ls-R. (line 33) +* .tfm: Supported file formats. + (line 172) +* .ttc: Supported file formats. + (line 181) +* .ttf: Supported file formats. + (line 181) +* .vf: Supported file formats. + (line 192) +* .w: Supported file formats. + (line 43) +* .web: Supported file formats. + (line 43) +* / may not be /: Searching overview. (line 13) +* /, trailing in home directory: Tilde expansion. (line 18) +* //: Subdirectory expansion. + (line 6) +* /afs/... , installing into: Installing files. (line 32) +* /etc/profile: Unable to find files. + (line 14) +* /etc/profile and aliases: ls-R. (line 21) +* /var/tmp/texfonts: mktex configuration. (line 107) +* 2602gf: Unable to generate fonts. + (line 36) +* 8.3 filenames, using: mktex configuration. (line 62) +* : may not be :: Searching overview. (line 13) +* :: expansion: Default expansion. (line 6) +* @VAR@ substitutions: Running configure. (line 6) +* \, line continuation in texmf.cnf: Config files. (line 26) +* \openin: Searching overview. (line 31) +* \special, suppressing warnings about: Suppressing warnings. + (line 31) +* absolute filenames: Searching overview. (line 52) +* ac_include, Autoconf extension: Running configure. (line 6) +* access warnings: Searching overview. (line 56) +* Acorn TeX implementations: Other TeX packages. (line 6) +* AFMFONTS: Supported file formats. + (line 20) +* AFS: Installing files. (line 32) +* AIX 4.1 configure error: Empty Makefiles. (line 6) +* AIX shells and configure: configure shells. (line 14) +* aliases for fonts: Fontmap. (line 6) +* aliases, for filenames: Filename aliases. (line 6) +* all: Suppressing warnings. + (line 13) +* alphabetical order, not: Subdirectory expansion. + (line 6) +* Amiga support: Custom installation. (line 19) +* Amiga TeX implementations: Other TeX packages. (line 6) +* Andrew File System, installing with: Installing files. (line 32) +* announcement mailing list: Mailing lists. (line 6) +* ANSI C: TeX or Metafont failing. + (line 30) +* append-only directories and mktexpk: Security. (line 36) +* appendonlydir: mktex configuration. (line 54) +* architecture-(in)dependent files, installing only: Installing files. + (line 21) +* architectures, compiling multiple: configure scenarios. (line 18) +* arguments to mktex: mktex script arguments. + (line 6) +* argv[0]: Calling sequence. (line 9) +* ash, losing with configure: configure shells. (line 19) +* autoconf, recommended: Calling sequence. (line 90) +* automounter, and configuration: configure scenarios. (line 29) +* automounter, and ls-R: ls-R. (line 40) +* auxiliary tasks: Auxiliary tasks. (line 6) +* Babel <1>: Running make. (line 51) +* Babel: Kpathsea application distributions. + (line 28) +* Bach, Johann Sebastian: Default expansion. (line 41) +* backbone of CTAN: Electronic distribution. + (line 6) +* backslash-newline: Config files. (line 26) +* bash, recommended for running configure: configure shells. (line 6) +* basic glyph lookup: Basic glyph lookup. (line 6) +* Berry, Karl: History. (line 12) +* BIBINPUTS: Supported file formats. + (line 28) +* binary mode, for file transfers: Electronic distribution. + (line 20) +* blank lines, in texmf.cnf: Config files. (line 24) +* brace expansion: Brace expansion. (line 6) +* BSD universe: Running make. (line 44) +* bsh, ok with configure: configure shells. (line 14) +* BSTINPUTS: Supported file formats. + (line 32) +* bug address: Reporting bugs. (line 8) +* bug checklist: Bug checklist. (line 6) +* bug mailing list: Mailing lists. (line 6) +* bugs, reporting: Reporting bugs. (line 6) +* c-*.h: Calling sequence. (line 90) +* c-auto.h: Programming overview. + (line 25) +* c-auto.in: Running configure. (line 6) +* cache of fonts, local: Security. (line 22) +* calling sequence: Calling sequence. (line 6) +* CC: configure environment. + (line 10) +* cc warnings: Pointer combination warnings. + (line 6) +* cc, compiling with: configure environment. + (line 11) +* CD-ROM distributions: CD-ROM distribution. (line 6) +* CFLAGS: configure environment. + (line 14) +* ChangeLog entry: Bug checklist. (line 56) +* checklist for bug reports: Bug checklist. (line 6) +* checksum: Suppressing warnings. + (line 16) +* circle fonts: Fontmap. (line 19) +* clean Make target: Cleaning up. (line 15) +* client_path in kpse_format_info: Calling sequence. (line 45) +* CMAPFONTS: Supported file formats. + (line 36) +* cmr10, as fallback font: Fallback font. (line 15) +* cmr10.vf: Searching overview. (line 31) +* cnf.c: Config files. (line 75) +* cnf.h: Programming with config files. + (line 23) +* code sharing: Shared library. (line 9) +* color printers, configuring: Simple installation. (line 60) +* comments, in fontmap files: Fontmap. (line 28) +* comments, in texmf.cnf: Config files. (line 22) +* comments, making: Introduction. (line 27) +* common features in glyph lookup: Basic glyph lookup. (line 6) +* common problems: Common problems. (line 6) +* comp.sys.sun.admin FAQ: ShellWidgetClass. (line 6) +* comp.text.tex: Mailing lists. (line 29) +* compilation: Installation. (line 6) +* compilation value, source for path: Path sources. (line 20) +* compiler bugs: TeX or Metafont failing. + (line 6) +* compiler bugs, finding: TeX or Metafont failing. + (line 24) +* compiler options, additional: Running make. (line 27) +* compiler options, specifying: configure environment. + (line 15) +* compiler, changing: Running make. (line 40) +* compiling on HP-UX: TeX or Metafont failing. + (line 30) +* conditions for use: Introduction. (line 31) +* config files: Config files. (line 6) +* config files, for Kpathsea-using programs: Calling sequence. + (line 45) +* config files, programming with: Programming with config files. + (line 6) +* config.h: Programming overview. + (line 25) +* config.log: Bug checklist. (line 28) +* config.ps: Path searching options. + (line 35) +* config.ps, search path for: Supported file formats. + (line 47) +* config.status: Bug checklist. (line 31) +* configuration: Installation. (line 6) +* configuration bugs: Bug checklist. (line 31) +* configuration compiler options: configure environment. + (line 23) +* configuration file, source for path: Path sources. (line 17) +* configuration files as shell scripts.: Config files. (line 67) +* configuration of mktex scripts: mktex configuration. (line 6) +* configuration of optional features: configure options. (line 16) +* configure error from sed: Empty Makefiles. (line 6) +* configure options: configure options. (line 6) +* configure options for mktex scripts: mktex configuration. (line 14) +* configure, running: Running configure. (line 6) +* context diff: Bug checklist. (line 56) +* continuation character: Config files. (line 26) +* core dumps, reporting: Bug checklist. (line 62) +* CPPFLAGS: configure environment. + (line 22) +* crashes, reporting: Bug checklist. (line 62) +* CTAN, defined: Electronic distribution. + (line 6) +* CTAN.sites: Electronic distribution. + (line 13) +* custom installation: Custom installation. (line 6) +* CWEBINPUTS: Supported file formats. + (line 43) +* 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 62) +* debugging: Debugging. (line 6) +* debugging options, in Kpathsea-using program: Calling sequence. + (line 37) +* debugging output: Debugging. (line 27) +* debugging with -g, disabling: configure scenarios. (line 32) +* DEC shells and configure: configure shells. (line 25) +* default expansion: Default expansion. (line 6) +* default path features: Default path features. + (line 6) +* default paths, changing: Default path generation. + (line 6) +* default paths, how they're made: Default path generation. + (line 12) +* default_texsizes: Fallback font. (line 6) +* DEFS: configure environment. + (line 31) +* depot: configure scenarios. (line 29) +* device, wrong: Unable to generate fonts. + (line 29) +* directories, changing default installation: Default path generation. + (line 6) +* directories, making append-only: mktex configuration. (line 55) +* 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 52) +* disk space, needed: Disk space. (line 6) +* disk usage, reducing: Logging. (line 6) +* distclean Make target: Cleaning up. (line 6) +* distributions, compiling simultaneously: Kpathsea application distributions. + (line 6) +* distributions, not compiling: Kpathsea application distributions. + (line 6) +* distributions, on CD-ROM: CD-ROM distribution. (line 6) +* distributions, via ftp: Electronic distribution. + (line 6) +* dlclose: dlopen. (line 6) +* dlopen: dlopen. (line 6) +* dlsym: dlopen. (line 6) +* dlsym.c: dlopen. (line 21) +* doc files: Supported file formats. + (line 158) +* DOS compatible names: mktex configuration. (line 62) +* DOS support: Custom installation. (line 19) +* DOS TeX implementations: Other TeX packages. (line 6) +* dosnames: mktex configuration. (line 61) +* dot files: ls-R. (line 33) +* doubled colons: Default expansion. (line 6) +* dpiNNN directories: mktex configuration. (line 62) +* DVI drivers: Kpathsea application distributions. + (line 12) +* DVILJMAKEPK: mktex script names. (line 22) +* DVILJSIZES: Fallback font. (line 6) +* DVIPSFONTS: Supported file formats. + (line 227) +* DVIPSHEADERS: Supported file formats. + (line 184) +* DVIPSMAKEPK: mktex script names. (line 22) +* DVIPSSIZES: Fallback font. (line 6) +* dynamic creation of files: mktex scripts. (line 6) +* dynamic linking problems with OpenWin libraries: ShellWidgetClass. + (line 6) +* EC fonts, and dynamic source creation: mktex scripts. (line 6) +* elt-dirs.c: Subdirectory expansion. + (line 41) +* email CTAN access: Electronic distribution. + (line 17) +* enabling mktex scripts: mktex configuration. (line 6) +* ENCFONTS: Supported file formats. + (line 51) +* engine name: Path searching options. + (line 20) +* environment variable, source for path: Path sources. (line 9) +* 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 16) +* excessive startup time: Slow path searching. (line 6) +* expand.c: Brace expansion. (line 26) +* expanding symlinks: Calling sequence. (line 16) +* expansion, default: Default expansion. (line 6) +* expansion, path element: Searching overview. (line 43) +* 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 52) +* externally-built filename database: Filename database. (line 6) +* extra colons: Default expansion. (line 6) +* extraclean Make target: Cleaning up. (line 23) +* failed mktex... script invocation: mktex script names. (line 25) +* fallback font: Fallback font. (line 6) +* fallback resolutions: Fallback font. (line 6) +* fallback resolutions, overriding: Running make. (line 10) +* FAQ, comp.sys.sun.admin: ShellWidgetClass. (line 6) +* FAQ, Kpathsea: Common problems. (line 6) +* Farwell, Matthew: Subdirectory expansion. + (line 22) +* features, of default paths: Default path features. + (line 6) +* 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 31) +* filename aliases: Filename aliases. (line 6) +* filename database: Filename database. (line 6) +* filename database generation: Filename database generation. + (line 6) +* filenames, absolute or explicitly relative: Searching overview. + (line 52) +* files, unable to find: Unable to find files. + (line 6) +* filesystem search: Searching overview. (line 22) +* floating directories: Searching overview. (line 22) +* 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) +* fontmap files: Fontmap. (line 6) +* fontmaps: mktex configuration. (line 80) +* fontname: mktex configuration. (line 81) +* fontnames, arbitrary length: Fontmap. (line 15) +* fonts, being created: Simple installation. (line 79) +* FOOINPUTS: Supported file formats. + (line 209) +* fopen, redefined: Debugging. (line 54) +* format of external database: Database format. (line 6) +* Free Software Foundation: CD-ROM distribution. (line 12) +* FreeBSD configure error: Empty Makefiles. (line 6) +* FreeBSD shells and configure: configure shells. (line 19) +* FSF Source Code CD-ROM: CD-ROM distribution. (line 12) +* ftp retrieval: Electronic distribution. + (line 6) +* ftp.tug.org: unixtex.ftp. (line 6) +* fundamental purpose of Kpathsea: Introduction. (line 6) +* gcc, compiling with: configure environment. + (line 11) +* gdb, recommended: Bug checklist. (line 62) +* generation of filename database: Filename database generation. + (line 6) +* get_applicationShellWidgetClass: ShellWidgetClass. (line 6) +* get_wmShellWidgetClass: ShellWidgetClass. (line 6) +* gf: Supported file formats. + (line 58) +* GFFONTS: Supported file formats. + (line 58) +* 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 58) +* GNU C compiler bugs: TeX or Metafont failing. + (line 19) +* GNU General Public License: Introduction. (line 31) +* 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 83) +* hash_summary_only variable for debugging: Debugging. (line 105) +* help, mailing list for general TeX: Mailing lists. (line 29) +* HIER: Default path features. + (line 41) +* history of Kpathsea: History. (line 6) +* home directories in paths: Tilde expansion. (line 6) +* HOME, as ~ expansion: Tilde expansion. (line 6) +* HP-UX, compiling on: TeX or Metafont failing. + (line 30) +* identifiers, characters valid in: Config files. (line 36) +* illegal pointer combination warnings: Pointer combination warnings. + (line 6) +* include fontmap directive: Fontmap. (line 33) +* INDEXSTYLE: Supported file formats. + (line 67) +* info-tex@shsu.edu: Mailing lists. (line 29) +* input lines, reading: Calling sequence. (line 83) +* install-data Make target: Installing files. (line 28) +* install-exec Make target: Installing files. (line 23) +* installation: Installation. (line 6) +* installation testing: Installation testing. + (line 6) +* installation, architecture-(in)dependent files only: Installing files. + (line 21) +* installation, changing default directories: Default path generation. + (line 6) +* installation, customized: Custom installation. (line 6) +* installation, getting executables instead of: Simple installation. + (line 6) +* installation, simple: Simple installation. (line 6) +* installing files: Installing files. (line 6) +* interactive query: Path searching options. + (line 99) +* interface, not frozen: Introduction. (line 27) +* 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: Other TeX packages. + (line 18) +* Knuth, Donald E., original author: Electronic distribution. + (line 25) +* Korn shell, losing with configure: configure shells. (line 14) +* Kpathsea config file, source for path: Path sources. (line 17) +* Kpathsea version number: Kpathsea application distributions. + (line 6) +* kpathsea.h: Programming overview. + (line 16) +* kpathsea/HIER: Default path features. + (line 41) +* kpathsea/README.CONFIGURE: Running configure. (line 15) +* KPATHSEA_DEBUG: Calling sequence. (line 16) +* kpathsea_debug: Debugging. (line 18) +* KPATHSEA_DEBUG: Debugging. (line 18) +* kpathsea_debug: Debugging. (line 6) +* kpathsea_debug variable: Calling sequence. (line 37) +* KPSE_BITMAP_TOLERANCE: Basic glyph lookup. (line 15) +* kpse_cnf_get: Programming with config files. + (line 23) +* 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_fallback_font: Fallback font. (line 15) +* kpse_find_*: Calling sequence. (line 60) +* kpse_find_file <1>: Calling sequence. (line 60) +* kpse_find_file: File lookup. (line 26) +* kpse_find_glyph_format: Glyph lookup. (line 26) +* kpse_format_info: Calling sequence. (line 45) +* kpse_format_info_type: Debugging. (line 61) +* kpse_init_prog: Calling sequence. (line 51) +* kpse_init_prog, and MAKETEX_MODE: Default path features. + (line 25) +* kpse_make_specs: mktex script names. (line 6) +* kpse_open_file: Calling sequence. (line 74) +* kpse_program_name: Calling sequence. (line 16) +* kpse_set_progname: Calling sequence. (line 30) +* kpse_set_program_name: Calling sequence. (line 9) +* kpse_var_value: Programming with config files. + (line 10) +* kpsewhich: Invoking kpsewhich. (line 6) +* Kpsewhich, and debugging: Debugging. (line 31) +* ksh, losing with configure: configure shells. (line 14) +* labrea.stanford.edu: Other TeX packages. (line 18) +* LaserJet drive: Kpathsea application distributions. + (line 13) +* last-resort font: Fallback font. (line 6) +* LaTeX help mailing list: Mailing lists. (line 29) +* lcircle10: Fontmap. (line 19) +* LDFLAGS: configure environment. + (line 38) +* leading colons: Default expansion. (line 6) +* leaf directories wrongly guessed: Unable to find files. + (line 21) +* leaf directory trick: Subdirectory expansion. + (line 22) +* libdl.a: dlopen. (line 6) +* libraries, changing: Running make. (line 40) +* libraries, specifying additional: configure environment. + (line 43) +* LIBS: configure environment. + (line 42) +* libucb, avoiding: Running make. (line 44) +* license for using the library: Introduction. (line 31) +* LIGFONTS: Supported file formats. + (line 71) +* lines, reading arbitrary-length: Calling sequence. (line 83) +* Linux File System Standard: mktex configuration. (line 107) +* Linux shells and configure: configure shells. (line 19) +* Linux, using Web2c: CD-ROM distribution. (line 16) +* lndir for building symlink trees: configure scenarios. (line 18) +* loader options: configure environment. + (line 39) +* loader options, final: Running make. (line 33) +* loader options, initial: Running make. (line 30) +* local cache of fonts: Security. (line 22) +* log file: Logging. (line 6) +* logging successful searches: Logging. (line 6) +* lost+found directory: Searching overview. (line 56) +* lostchar: Suppressing warnings. + (line 19) +* ls-R: Supported file formats. + (line 74) +* ls-R and AFS: Installing files. (line 40) +* ls-R database file: ls-R. (line 6) +* ls-R, simplest build: ls-R. (line 18) +* Mach10 configure error: Empty Makefiles. (line 6) +* Macintosh TeX implementations: Other TeX packages. (line 6) +* MacKenzie, David <1>: Subdirectory expansion. + (line 22) +* MacKenzie, David: History. (line 45) +* magic characters: Searching overview. (line 13) +* mailing lists: Mailing lists. (line 6) +* maintainer-clean Make target: Cleaning up. (line 18) +* Make arguments, additional: Running make. (line 36) +* make, running: Running make. (line 6) +* Makefile.in: Running configure. (line 6) +* Makefiles, empty: Empty Makefiles. (line 6) +* MAKETEX_DEBUG (512): Debugging. (line 91) +* MAKETEX_FINE_DEBUG (1024): Debugging. (line 100) +* MAKETEX_MODE: Default path features. + (line 19) +* memory allocation routines: Calling sequence. (line 83) +* metafont driver files: mktex configuration. (line 87) +* Metafont failures: TeX or Metafont failing. + (line 6) +* Metafont installation: Unable to generate fonts. + (line 52) +* 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 24) +* MFINPUTS: Supported file formats. + (line 88) +* MFPOOL: Supported file formats. + (line 92) +* MFTINPUTS: Supported file formats. + (line 96) +* mirrors, FTP: Electronic distribution. + (line 13) +* MISCFONTS: Supported file formats. + (line 100) +* mismatched checksum warnings: Suppressing warnings. + (line 17) +* missfont.log: mktex script names. (line 25) +* MISSFONT_LOG: mktex script names. (line 30) +* missing character warnings: Suppressing warnings. + (line 20) +* mktex script configuration: mktex configuration. (line 6) +* mktex script names: mktex script names. (line 6) +* mktex scripts: mktex scripts. (line 6) +* mktex.cnf: mktex configuration. (line 23) +* mktex.opt: mktex configuration. (line 34) +* mktexdir: mktex configuration. (line 55) +* mktexmf: mktex script names. (line 17) +* mktexpk: mktex script names. (line 11) +* mktexpk , initial runs: Simple installation. (line 79) +* mktexpk can't guess mode: Unable to generate fonts. + (line 12) +* mktextex: mktex script names. (line 14) +* mktextfm: mktex script names. (line 20) +* mode directory, omitting: mktex configuration. (line 92) +* Morgan, Tim: History. (line 12) +* mostlyclean Make target: Cleaning up. (line 10) +* MPINPUTS: Supported file formats. + (line 104) +* MPMEMS: Supported file formats. + (line 80) +* MPPOOL: Supported file formats. + (line 108) +* MPSUPPORT: Supported file formats. + (line 84) +* MT_FEATURES: mktex configuration. (line 34) +* multiple architectures, compiling on: configure scenarios. (line 18) +* multiple architectures, directories for: configure scenarios. + (line 23) +* multiple architectures, installing on: Installing files. (line 21) +* multiple TeX hierarchies: Brace expansion. (line 20) +* must exist: Searching overview. (line 31) +* names for mktex scripts: mktex script names. (line 6) +* NetBSD configure error: Empty Makefiles. (line 6) +* NetBSD shells and configure: configure shells. (line 19) +* Neumann, Gustaf: History. (line 57) +* newsgroup for TeX: Mailing lists. (line 29) +* NeXT sed error: Empty Makefiles. (line 6) +* NeXT, lacking X11: Kpathsea application distributions. + (line 6) +* NFS and ls-R: ls-R. (line 40) +* NFS CTAN access: Electronic distribution. + (line 17) +* nomfdrivers: mktex configuration. (line 86) +* nomode: mktex configuration. (line 91) +* non-English typesetting: Kpathsea application distributions. + (line 28) +* non-Unix operating systems: Custom installation. (line 19) +* none: Suppressing warnings. + (line 23) +* null pointers, dereferencing: Bug checklist. (line 62) +* numeric debugging values: Debugging. (line 34) +* obtaining TeX: unixtex.ftp. (line 6) +* obtaining Web2c by ftp: Electronic distribution. + (line 6) +* obtaining Web2c on CD-ROM: CD-ROM distribution. (line 6) +* OCPINPUTS: Supported file formats. + (line 112) +* OFMFONTS: Supported file formats. + (line 116) +* online Metafont display, spurious: Unable to generate fonts. + (line 36) +* OPENTYPEFONTS: Supported file formats. + (line 120) +* OpenWin libraries, dynamic linking problems: ShellWidgetClass. + (line 6) +* optimization caveat: TeX or Metafont failing. + (line 15) +* optimization, enabling: configure scenarios. (line 32) +* options for debugging: Debugging. (line 6) +* options to configure: configure options. (line 16) +* OS/2 support: Custom installation. (line 19) +* other TeX distributions: Other TeX packages. (line 6) +* OTPINPUTS: Supported file formats. + (line 126) +* overview of path searching: Searching overview. (line 6) +* overview of programming with Kpathsea: Programming overview. + (line 6) +* OVFFONTS: Supported file formats. + (line 129) +* OVPFONTS: Supported file formats. + (line 132) +* patches, Sun OpenWin: ShellWidgetClass. (line 29) +* 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) +* paths, changing default <1>: Default path generation. + (line 6) +* paths, changing default: Changing search paths. + (line 6) +* paths, device name included in: Default path features. + (line 19) +* paths.h: Default path generation. + (line 27) +* paths.h, creating: Running make. (line 6) +* pathsearch.h: Programming overview. + (line 16) +* pc Pascal compiler: History. (line 12) +* PCL driver: Kpathsea application distributions. + (line 13) +* PDF generation: Kpathsea application distributions. + (line 16) +* pdftex.cfg: Path searching options. + (line 35) +* PDFTEXCONFIG: Supported file formats. + (line 136) +* pdftexconfig.tex: Path searching options. + (line 35) +* permission denied: Searching overview. (line 56) +* permissions, directory: Security. (line 51) +* permissions, file: Security. (line 47) +* PKFONTS: Supported file formats. + (line 139) +* plain.base: Unable to generate fonts. + (line 46) +* pointer combination warnings: Pointer combination warnings. + (line 6) +* PostScript driver: Kpathsea application distributions. + (line 16) +* PostScript fonts, additional: Simple installation. (line 60) +* precompiled executables, instead of installation: Simple installation. + (line 6) +* precompiled Unix binaries: Other TeX packages. (line 13) +* preprocessor options: configure environment. + (line 32) +* preprocessor options, additional: Running make. (line 24) +* printer configuration files: Simple installation. (line 60) +* privacy, semblance of: Logging. (line 32) +* problems, common: Common problems. (line 6) +* proginit.c: Default path features. + (line 25) +* proginit.h: Calling sequence. (line 51) +* program-varying paths: Supported file formats. + (line 12) +* program_invocation_name: Calling sequence. (line 16) +* program_invocation_short_name: Calling sequence. (line 16) +* 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 145) +* pxp Pascal preprocessor: History. (line 12) +* quoting variable values: Variable expansion. (line 17) +* readable: Suppressing warnings. + (line 26) +* reading arbitrary-length lines: Calling sequence. (line 83) +* README.CONFIGURE: Running configure. (line 15) +* README.mirrors: Electronic distribution. + (line 13) +* recording successful searches: Logging. (line 6) +* relative filenames: Searching overview. (line 52) +* relative filenames in ls-R: Installing files. (line 40) +* reporting bugs: Reporting bugs. (line 6) +* resident.c: Calling sequence. (line 45) +* resolution, setting: Path searching options. + (line 15) +* resolutions, last-resort: Fallback font. (line 6) +* retrieving TeX: unixtex.ftp. (line 6) +* right-hand side of variable assignments: Config files. (line 44) +* Rokicki, Tom: History. (line 12) +* root user: Tilde expansion. (line 18) +* 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 paths, changing default: Changing search paths. + (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) +* sed error from configure: Empty Makefiles. (line 6) +* SELFAUTODIR: Calling sequence. (line 16) +* SELFAUTOLOC: Calling sequence. (line 16) +* SELFAUTOPARENT: Calling sequence. (line 16) +* sending patches: Bug checklist. (line 56) +* setgid scripts: Security. (line 40) +* SFDFONTS: Supported file formats. + (line 149) +* sh5, ok with configure: configure shells. (line 25) +* shared library, making: Shared library. (line 6) +* shell scripts as configuration files: Config files. (line 67) +* shell variables: Variable expansion. (line 17) +* shell_escape, example for code: Programming with config files. + (line 10) +* shells and configure: configure shells. (line 6) +* simple installation: Simple installation. (line 6) +* site overrides for mktex...: mktex configuration. (line 23) +* size of distribution archives: Disk space. (line 6) +* skeleton TeX directory: TeX directory structure. + (line 6) +* slow startup time: Slow path searching. (line 6) +* Solaris BSD compatibility, not: Running make. (line 44) +* source files: Supported file formats. + (line 161) +* sources for search paths: Path sources. (line 6) +* special: Suppressing warnings. + (line 30) +* st_nlink: Subdirectory expansion. + (line 26) +* stack trace: Bug checklist. (line 62) +* 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) +* static linking: ShellWidgetClass. (line 39) +* static linking and dlsym: dlopen. (line 6) +* string routines: Calling sequence. (line 83) +* strip: mktex configuration. (line 101) +* stripsupplier: mktex configuration. (line 95) +* striptypeface: mktex configuration. (line 98) +* subdirectory searching: Subdirectory expansion. + (line 6) +* suggestions, making: Introduction. (line 27) +* Sun 2: History. (line 12) +* Sun OpenWin patches: ShellWidgetClass. (line 29) +* supplier directory, omitting: mktex configuration. (line 96) +* supported file formats: Supported file formats. + (line 6) +* suppressing warnings: Suppressing warnings. + (line 6) +* symbolic link trees, for multiple architectures: configure scenarios. + (line 18) +* symbolic links not found: Unable to find files. + (line 21) +* symbolic links, and ls-R: ls-R. (line 38) +* symlinks, resolving: Calling sequence. (line 16) +* system C compiler bugs: TeX or Metafont failing. + (line 19) +* system dependencies: Running configure. (line 6) +* system V universe: Running make. (line 44) +* T1FONTS: Supported file formats. + (line 184) +* T1INPUTS: Supported file formats. + (line 184) +* T42FONTS: Supported file formats. + (line 189) +* TDS: TeX directory structure. + (line 6) +* testing, post-installation: Installation testing. + (line 6) +* tests, simple: Simple installation. (line 79) +* teTeX: Other TeX packages. (line 13) +* TeX directory structure: TeX directory structure. + (line 6) +* TeX distributions besides Web2c: Other TeX packages. (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 help mailing list: Mailing lists. (line 29) +* TeX hierarchy, one: configure scenarios. (line 13) +* TeX Live CD-ROM: CD-ROM distribution. (line 8) +* TeX support: TeX support. (line 6) +* TeX Users Group: Introduction. (line 39) +* tex-archive@math.utah.edu: Mailing lists. (line 25) +* tex-file.c: File lookup. (line 26) +* tex-file.h: Programming overview. + (line 16) +* tex-glyph.c: Glyph lookup. (line 26) +* tex-glyph.h: Programming overview. + (line 16) +* tex-k-request@mail.tug.org: Mailing lists. (line 7) +* tex-k@mail.tug.org (bug address): Reporting bugs. (line 8) +* tex-make.c: mktex script names. (line 6) +* TEX_HUSH <1>: Suppressing warnings. + (line 6) +* TEX_HUSH: Searching overview. (line 56) +* TEXBIB: Supported file formats. + (line 28) +* TEXCONFIG: Supported file formats. + (line 47) +* TEXDOCS: Supported file formats. + (line 158) +* TEXFONTMAPS: Supported file formats. + (line 77) +* TEXFONTS: Supported file formats. + (line 58) +* texfonts.map: Fontmap. (line 6) +* TEXFORMATS: Supported file formats. + (line 54) +* TEXINDEXSTYLE: Supported file formats. + (line 67) +* TEXINPUTS: Supported file formats. + (line 62) +* TEXMF: TeX directory structure. + (line 6) +* texmf.cnf, and variable expansion: Variable expansion. (line 6) +* texmf.cnf, creating: Running make. (line 6) +* texmf.cnf, definition for: Config files. (line 6) +* texmf.cnf, generated: Default path generation. + (line 22) +* texmf.cnf, source for path: Path sources. (line 17) +* texmf.in: Default path generation. + (line 22) +* texmf.in, editing: Changing search paths. + (line 6) +* texmf.sed: Default path generation. + (line 17) +* TEXMFCNF <1>: Supported file formats. + (line 39) +* TEXMFCNF: Config files. (line 6) +* TEXMFDBS <1>: Supported file formats. + (line 74) +* TEXMFDBS: ls-R. (line 6) +* TEXMFINI: Supported file formats. + (line 24) +* TEXMFLOG: Logging. (line 10) +* TEXMFOUTPUT: mktex script names. (line 30) +* TEXMFSCRIPTS: Supported file formats. + (line 164) +* TEXMFVAR: mktex configuration. (line 117) +* texmfvar: mktex configuration. (line 116) +* TEXPICTS: Supported file formats. + (line 62) +* TEXPKS: Supported file formats. + (line 139) +* TEXPOOL: Supported file formats. + (line 168) +* TEXPSHEADERS: Supported file formats. + (line 145) +* TEXSIZES: Fallback font. (line 6) +* TEXSOURCES: Supported file formats. + (line 161) +* TFMFONTS: Supported file formats. + (line 172) +* tilde expansion: Tilde expansion. (line 6) +* tilde.c: Tilde expansion. (line 24) +* time system call: Logging. (line 15) +* tolerance for glyph lookup: Basic glyph lookup. (line 15) +* total disk space: Disk space. (line 6) +* trailing / in home directory: Tilde expansion. (line 18) +* trailing colons: Default expansion. (line 6) +* TRFONTS: Supported file formats. + (line 177) +* trick for detecting leaf directories: Subdirectory expansion. + (line 22) +* trojan horse attack: Security. (line 10) +* TTFONTS: Supported file formats. + (line 181) +* tug.org: unixtex.ftp. (line 6) +* tug@tug.org: Introduction. (line 46) +* typeface directory, omitting: mktex configuration. (line 99) +* ucbinclude, avoiding: Running make. (line 44) +* Ultrix shells and configure: configure shells. (line 25) +* unable to find files: Unable to find files. + (line 6) +* unable to generate fonts: Unable to generate fonts. + (line 6) +* uname: Bug checklist. (line 21) +* universe, BSD vs. system V: Running make. (line 44) +* UNIX_ST_LINK: Subdirectory expansion. + (line 38) +* 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 56) +* unusable ls-R warning: ls-R. (line 45) +* usage patterns, finding: Logging. (line 6) +* USE_TEXMFVAR: mktex configuration. (line 122) +* USE_VARTEXFONTS: mktex configuration. (line 112) +* Usenet TeX newsgroup: Mailing lists. (line 29) +* varfonts: mktex configuration. (line 106) +* variable expansion: Variable expansion. (line 6) +* variable.c: Variable expansion. (line 32) +* variable.h: Programming with config files. + (line 10) +* VARTEXFONTS: mktex configuration. (line 107) +* VAX 11/750: History. (line 12) +* version number, of Kpathsea: Kpathsea application distributions. + (line 6) +* version numbers, determining: Bug checklist. (line 16) +* VF files, not found: Searching overview. (line 31) +* VFFONTS: Supported file formats. + (line 192) +* VMS support: Custom installation. (line 19) +* VMS TeX implementations: Other TeX packages. (line 6) +* Vojta, Paul: History. (line 30) +* Walsh, Norman: History. (line 57) +* warning about unusable ls-R: ls-R. (line 45) +* warnings, file access: Searching overview. (line 56) +* warnings, pointer combinations: Pointer combination warnings. + (line 6) +* warnings, suppressing: Suppressing warnings. + (line 6) +* wcstombs: dlopen. (line 6) +* WEB2C: Supported file formats. + (line 200) +* Weber, Olaf: History. (line 74) +* WEBINPUTS: Supported file formats. + (line 196) +* whitespace, in fontmap files: Fontmap. (line 28) +* whitespace, not ignored on continuation lines: Config files. + (line 26) +* Windows TeX implementations: Other TeX packages. (line 6) +* World Wide Web CTAN access: Electronic distribution. + (line 17) +* www.tug.org: unixtex.ftp. (line 6) +* X11 previewer: Kpathsea application distributions. + (line 25) +* X11, lacking on NeXT: Kpathsea application distributions. + (line 6) +* XCFLAGS: Running make. (line 26) +* XCPPFLAGS: Running make. (line 22) +* XDEFS: Running make. (line 23) +* XDVIFONTS: Supported file formats. + (line 227) +* XDVIMAKEPK: mktex script names. (line 22) +* XDVISIZES: Fallback font. (line 6) +* XLDFLAGS: Running make. (line 29) +* XLOADLIBES: Running make. (line 32) +* XMAKEARGS: Running make. (line 35) +* Xmu library problems: ShellWidgetClass. (line 13) +* XtStrings: XtStrings. (line 6) +* zuhn, david: History. (line 51) +* { expansion: Brace expansion. (line 6) +* ~ expansion: Tilde expansion. (line 6) + + + +Tag Table: +Node: Top1469 +Node: Introduction2114 +Node: History4092 +Node: Installation8184 +Node: Simple installation8974 +Node: Custom installation12557 +Node: Disk space13731 +Node: Kpathsea application distributions14615 +Node: Changing search paths15730 +Node: Default path features16912 +Node: Default path generation19048 +Node: Running configure20491 +Node: configure shells21542 +Node: configure options22594 +Node: configure environment24101 +Node: configure scenarios25903 +Node: Shared library27489 +Node: Running make28503 +Node: Installing files30550 +Node: Cleaning up32497 +Node: Filename database generation33545 +Node: mktex scripts34112 +Node: mktex configuration35069 +Node: mktex script names40613 +Node: mktex script arguments41711 +Node: Installation testing42601 +Node: Security42965 +Node: TeX directory structure45532 +Node: unixtex.ftp49954 +Node: Electronic distribution51969 +Node: CD-ROM distribution54734 +Node: Other TeX packages55704 +Node: Reporting bugs57000 +Node: Bug checklist57740 +Node: Mailing lists61442 +Node: Debugging62801 +Node: Logging67873 +Node: Common problems69743 +Node: Unable to find files70574 +Node: Slow path searching72985 +Node: Unable to generate fonts74362 +Node: TeX or Metafont failing76871 +Node: Empty Makefiles78749 +Node: XtStrings79979 +Node: dlopen80815 +Node: ShellWidgetClass81633 +Node: Pointer combination warnings83265 +Node: Path searching83654 +Node: Searching overview84301 +Node: Path sources87673 +Node: Config files88744 +Node: Path expansion92144 +Node: Default expansion93093 +Node: Variable expansion95163 +Node: Tilde expansion96566 +Node: Brace expansion97464 +Node: KPSE_DOT expansion98569 +Node: Subdirectory expansion99082 +Node: Filename database101431 +Node: ls-R102745 +Node: Filename aliases105639 +Node: Database format106817 +Node: Invoking kpsewhich107830 +Node: Path searching options108707 +Node: Auxiliary tasks113174 +Node: Standard options114848 +Node: TeX support115168 +Node: Supported file formats116459 +Node: File lookup123607 +Node: Glyph lookup124898 +Node: Basic glyph lookup126025 +Node: Fontmap126904 +Node: Fallback font129521 +Node: Suppressing warnings130486 +Node: Programming131591 +Node: Programming overview132104 +Node: Calling sequence134380 +Node: Program-specific files139409 +Node: Programming with config files140447 +Node: Index141747 + +End Tag Table diff --git a/Build/source/texk/web2c/doc/web2c.cps b/Build/source/texk/web2c/doc/web2c.cps deleted file mode 100644 index d4097dd5a7a..00000000000 --- a/Build/source/texk/web2c/doc/web2c.cps +++ /dev/null @@ -1,846 +0,0 @@ -\initial {#} -\entry {\samp {#define} options}{3} -\initial {$} -\entry {\code {$ \r {expansion in filenames}}}{13} -\initial {%} -\entry {\code {%& \r {magic number}}}{11} -\initial {-} -\entry {\code {- \r {starting a filename}}}{7} -\entry {\code {- \r {starts option names}}}{7} -\entry {\code {-- \r {starts option names}}}{7} -\entry {\code {--disable-dump-share configure \r {option}}}{11} -\entry {\code {--enable-ipc configure \r {option}}}{15} -\entry {\code {--help \r {common option}}}{7} -\entry {\code {--quiet (newer)}}{35} -\entry {\code {--verbose (newer)}}{35} -\entry {\code {--verbose \r {common option}}}{7} -\entry {\code {--version \r {common option}}}{7} -\entry {\code {--with-editor=\var {cmd}}}{12} -\entry {\code {--with-epsfwin}}{26} -\entry {\code {--with-hp2627win}}{26} -\entry {\code {--with-mftalkwin}}{26} -\entry {\code {--with-next}}{26} -\entry {\code {--with-regiswin}}{26} -\entry {\code {--with-suntoolswin}}{26} -\entry {\code {--with-tektronixwin}}{26} -\entry {\code {--with-unitermwin}}{26} -\entry {\code {--with-x}}{26} -\entry {\code {--with-x-toolkit=\var {kit}}}{26} -\entry {\code {--with-x11}}{26} -\entry {\code {--with-x11win}}{26} -\entry {\code {-8bit}}{9} -\entry {\code {-base=\var {base}}}{11} -\entry {\code {-base=\var {dumpname}}}{8} -\entry {\code {-change=\var {chfile}}}{28} -\entry {\code {-charcode-format=\var {type}}}{51, 53} -\entry {\code {-D \r {compiler options}}}{3} -\entry {\code {-dpi=\var {real}}}{43} -\entry {\code {-enc}}{15} -\entry {\code {-file-line-error}}{7} -\entry {\code {-file-line-error-style}}{7} -\entry {\code {-fmt=\var {dumpname}}}{8} -\entry {\code {-fmt=\var {fmt}}}{11} -\entry {\code {-geometry\r {, supported with Xt}}}{26} -\entry {\code {-halt-on-error}}{8} -\entry {\code {-images}}{49} -\entry {\code {-ini}}{8, 10} -\entry {\code {-interaction=\var {string}}}{8} -\entry {\code {-ipc}}{15} -\entry {\code {-ipc-start}}{15} -\entry {\code {-jobname=\var {string}}}{8} -\entry {\code {-kpathsea-debug=\var {number}}}{8} -\entry {\code {-length=\var {number}}}{39} -\entry {\code {-loose}}{40} -\entry {\code {-lowercase}}{39} -\entry {\code {-magnification=\var {integer}}}{42, 43} -\entry {\code {-max-pages=\var {n}}}{42, 43} -\entry {\code {-mem=\var {dumpname}}}{8} -\entry {\code {-mem=\var {mem}}}{11} -\entry {\code {-min-crossrefs=\var {n}}}{37} -\entry {\code {-mixedcase}}{39} -\entry {\code {-mktex=\var {filetype}}}{15, 24} -\entry {\code {-mltex}}{16} -\entry {\code {-mnemonics}}{49} -\entry {\code {-no-file-line-error}}{7} -\entry {\code {-no-mktex=\var {filetype}}}{15, 24} -\entry {\code {-no-parse-first-line}}{8} -\entry {\code {-no-shell-escape}}{16} -\entry {\code {-oem}}{9} -\entry {\code {-output-comment=\var {string}}}{16} -\entry {\code {-output-directory}}{8, 9} -\entry {\code {-output-level=\var {n}}}{43} -\entry {\code {-overflow-label-offset=\var {points}}}{27} -\entry {\code {-page-start=\var {page-spec}}}{42, 43} -\entry {\code {-parse-first-line}}{8} -\entry {\code {-progname=\var {string}}}{8, 11} -\entry {\code {-recorder}}{9} -\entry {\code {-shell-escape}}{16} -\entry {\code {-show-opcodes}}{43} -\entry {\code {-strict}}{40} -\entry {\code {-style=\var {mftfile}}}{28} -\entry {\code {-T}}{32} -\entry {\code {-terse}}{37} -\entry {\code {-tex}}{35} -\entry {\code {-tex=\var {texprogram}}}{32} -\entry {\code {-translate-file=\var {tcxfile}}}{9} -\entry {\code {-troff}}{32, 33, 35} -\entry {\code {-underline}}{40} -\entry {\code {-uppercase}}{39} -\entry {\code {-x}}{40} -\initial {.} -\entry {\code {.\r {, used for output}}}{9} -\entry {\code {.2602gf}}{23} -\entry {\code {.aux \r {cross-reference files}}}{37} -\entry {\code {.base}}{24} -\entry {\code {.bbl \r {bibliography files}}}{37} -\entry {\code {.bib \r {bibliography databases}}}{37} -\entry {\code {.blg \r {Bib\TeX {} log file}}}{37} -\entry {\code {.fmt}}{17} -\entry {\code {.mem}}{32} -\entry {\code {.mf}}{23} -\entry {\code {.mp}}{30} -\entry {\code {.\var {nnn} \r {PostScript figures}}}{30} -\entry {\code {.\var {nnn}gf \r {generic fonts}}}{23} -\entry {\code {.tcx \r {character translation files}}}{9, 19} -\entry {\code {.tex}}{14} -\entry {\code {.tfm \r {output}}}{23, 30} -\entry {\code {.Xdefaults}}{26} -\entry {\code {.Xresources}}{26} -\initial {^} -\entry {\code {^^ \r {notation, avoiding}}}{20} -\initial {{\tt \indexbackslash }} -\entry {\code {{\tt \backslashcurfont }bibliography}}{37} -\entry {\code {{\tt \backslashcurfont }bibliographystyle}}{37} -\entry {\code {{\tt \backslashcurfont }charsubdef \r {and ML\TeX {}}}}{18} -\entry {\code {{\tt \backslashcurfont }count\var {n}}}{42, 43} -\entry {\code {{\tt \backslashcurfont }font \r {and dynamic generation}}}{14} -\entry {\code {{\tt \backslashcurfont }fontdimen}}{52} -\entry {\code {{\tt \backslashcurfont }immediate{\tt \backslashcurfont }write18}}{16} -\entry {\code {{\tt \backslashcurfont }input \r {filenames}}}{12} -\entry {\code {{\tt \backslashcurfont }mag}}{42, 43} -\entry {\code {{\tt \backslashcurfont }openout \r {and security}}}{14} -\entry {\code {{\tt \backslashcurfont }string}}{13} -\entry {\code {{\tt \backslashcurfont }tracingcharsubdef \r {and ML\TeX {}}}}{19} -\entry {\code {{\tt \backslashcurfont }tracinglostchars \r {and ML\TeX {}}}}{19} -\entry {\code {{\tt \backslashcurfont }write18 \r {shell escape extension}}}{16} -\initial {~} -\entry {\code {~ \r {expansion in filenames}}}{13} -\initial {2} -\entry {\code {2602gf}}{23} -\initial {8} -\entry {8 bit clean}{9} -\entry {\code {8 bit clean output, specifying}}{9} -\entry {8-bit characters}{19} -\initial {A} -\entry {\code {abbrv.bst}}{38} -\entry {accented character}{19} -\entry {accents, hyphenating words with}{18} -\entry {acknowledgements}{1} -\entry {\code {acm.bst}}{38} -\entry {Ada, WEB for}{39} -\entry {additional Make targets}{4} -\entry {AFM to TFM conversion}{54} -\entry {\code {afm2tfm}}{54} -\entry {\code {afmtopl}}{54} -\entry {aliases for fonts}{9} -\entry {\code {alpha.bst}}{38} -\entry {American Mathematical Society, typesetting system}{18} -\entry {AMS\TeX {}}{18} -\entry {\code {apalike.bst}}{38} -\entry {Arabic typesetting}{22} -\entry {architecture dependencies}{11} -\entry {array limit, fixed}{5} -\entry {array sizes}{5} -\entry {assembly language routines}{4} -\entry {\code {autotrace}}{54} -\entry {Awk, WEB for}{39} -\initial {B} -\entry {base file, determining}{11} -\entry {base files}{24} -\entry {base files, need mode definitions}{25} -\entry {base files, plain only}{25} -\entry {base files, sharing}{11} -\entry {\code {bases \r {Make target}}}{4} -\entry {basic Bib\TeX {} style files}{38} -\entry {basic fonts and macros}{2} -\entry {batch languages}{14} -\entry {BDF and GF conversion}{54} -\entry {\code {beginfig}}{30} -\entry {\code {BeginPath \r {ditroff command}}}{34} -\entry {Berry, Karl}{1} -\entry {\code {BIBINPUTS\r {, search path for bib files}}}{37} -\entry {bibliographies, creating}{37} -\entry {bibliography}{56} -\entry {bibliography items, cross-referenced}{37} -\entry {\code {bibtex}}{37} -\entry {Bib\TeX {}}{37} -\entry {Bib\TeX {} collection}{37} -\entry {Bib\TeX {} style files}{38} -\entry {BigEndian machines}{11} -\entry {binaries, linking}{8} -\entry {blank lines, in TCX files}{20} -\entry {Bourne shell commands in \TeX {}}{16} -\entry {boxes, memory for}{5} -\entry {breakpoints, memory for}{5} -\entry {Breitenlohner, Peter}{1} -\entry {\code {BSTINPUTS\r {, search path for bst files}}}{37} -\entry {\code {btex \r {and label extraction}}}{35} -\entry {\code {btex \r {for MetaPost labels}}}{30} -\entry {\code {btxdoc.bib}}{37} -\entry {\code {btxdoc.tex}}{37} -\entry {\code {btxhak.tex}}{37} -\entry {byte position}{48, 50} -\entry {byte swapping}{11} -\initial {C} -\entry {\code {c-sources \r {Makefile target}}}{4} -\entry {captions, extracting from MetaPost input}{35} -\entry {captions, for MetaPost}{32} -\entry {change files, and MFT}{28} -\entry {change files, and Tangle}{39} -\entry {change files, and Weave}{40} -\entry {changing error messages style}{7} -\entry {character codes, in GFtype output}{50} -\entry {character codes, in PKtype output}{48} -\entry {character codes, in TCX files}{20} -\entry {character proofs of fonts}{27} -\entry {\code {CHARACTER \r {property}}}{52} -\entry {character translation files}{19} -\entry {\code {CHARDP \r {property}}}{52} -\entry {\code {CHARHT \r {property}}}{52} -\entry {\code {CHARIC \r {property}}}{52} -\entry {\code {CHARWD \r {property}}}{52} -\entry {\code {chtopx}}{54} -\entry {class name for Metafont}{26} -\entry {\code {cm.base}}{25} -\entry {\code {cmbase.mf}}{25} -\entry {\code {cmbase.mft}}{28} -\entry {\code {cmmf.base \r {not recommended}}}{25} -\entry {comments, in TCX files}{20} -\entry {comments, MFT control}{28} -\entry {common options}{7} -\entry {commonalities}{7} -\entry {comparing file modification times}{35} -\entry {compilation}{2} -\entry {compile-time options}{2, 3} -\entry {Computer Modern fonts, and Troff}{31} -\entry {Computer Modern macros}{25} -\entry {\cite {Computer Modern Typefaces}, production of}{28} -\entry {configuration}{2} -\entry {configuration file reading}{9} -\entry {configuration file values}{5} -\entry {configuration, compile-time}{2} -\entry {\code {configure --with/--enable \r {options}}}{2} -\entry {\code {CONTENTS.tex}}{40} -\entry {control sequence names, space for}{5} -\entry {conventions for options,}{7} -\entry {conversion, DVI to plain text}{42} -\entry {conversion, GF to PK}{47} -\entry {conversion, GF to plain text}{49} -\entry {conversion, PK to GF}{47} -\entry {conversion, PK to plain text}{47} -\entry {conversion, property list to TFM}{53} -\entry {conversion, property list to VF}{54} -\entry {conversion, TFM to property list}{51} -\entry {conversion, VF to VPL}{53} -\entry {copyright notices}{55} -\entry {Cork encoding and ISO input}{20} -\entry {creating memory dumps}{10} -\entry {cross-referenced bibliography items}{37} -\entry {cross-references, omitting}{40} -\entry {current directory, used for output}{9} -\entry {Curtis, Pavel}{1} -\entry {Cweb}{39} -\entry {CWEB}{39} -\initial {D} -\entry {\code {D \var {c} \r {ditroff graphics}}}{34} -\entry {date and time, in memory dumps}{11} -\entry {debugging DVI utilities}{43} -\entry {debugging flags, specifying}{8} -\entry {decimal character codes, in TCX files}{20} -\entry {dependencies, hardware}{11} -\entry {design-size units}{52} -\entry {device definitions, for Metafont}{25} -\entry {device-independent width}{48, 50} -\entry {directory structure}{2} -\entry {\code {DISPLAY}}{26} -\entry {ditroff output, converting to MPX}{34} -\entry {\code {DMP}}{33, 34} -\entry {DMP, invoked by MakeMPX}{33} -\entry {\code {dmp.c}}{35} -\entry {dot files, written by \TeX {} programs}{14} -\entry {downloading of fonts for MetaPost labels}{31} -\entry {\code {dpost}}{34} -\entry {\code {DrawingServant}}{26} -\entry {\code {DrawPath \r {ditroff command}}}{34} -\entry {dump file}{8} -\entry {dumping memory}{10} -\entry {DVI comment, specifying}{16} -\entry {DVI files, converting to MPX}{33} -\entry {DVI files, creating multiple}{22} -\entry {DVI files, explained}{46} -\entry {DVI format definition}{42} -\entry {DVI opcodes, showing}{43} -\entry {DVI utilities}{42} -\entry {\code {dvicopy}}{42} -\entry {\code {dvitomp}}{33} -\entry {\code {DVITOMP}}{33} -\entry {DVItoMP, invoked by MakeMPX}{33} -\entry {\code {dvitype \r {DVI validation}}}{42} -\entry {dvitype output example}{43} -\entry {\code {dvitype.web}}{42} -\entry {dx \r {horizontal escapement}}{48, 50} -\entry {dy \r {vertical escapement}}{50} -\entry {dynamic array allocation}{5} -\entry {dynamic Metafont mode definitions with \code {smode}}{25} -\entry {dynamic packing variable}{48} -\initial {E} -\entry {\code {e \r {response at error prompt}}}{12} -\entry {e-circumflex}{19} -\entry {e-\TeX {}}{21} -\entry {\code {e.mft}}{28} -\entry {EC fonts}{14, 23} -\entry {editing of bitmap fonts}{54} -\entry {editor invoked at error}{12} -\entry {eight-bit characters in filenames}{13} -\entry {endian dependencies}{11} -\entry {\code {eoc \r {GF command}}}{50} -\entry {Eplain}{18} -\entry {\code {epsf}}{26} -\entry {errors, editor invoked at}{12} -\entry {escapement, horizontal}{48, 50} -\entry {escapement, vertical}{50} -\entry {\code {etex \r {and label extraction}}}{35} -\entry {\code {etex \r {for MetaPost labels}}}{30} -\entry {executables, shared initial and virgin}{10} -\entry {expanded plain format}{18} -\entry {extensions to \TeX {}}{21} -\entry {\code {extra_mem_bot}}{5} -\initial {F} -\entry {\code {FACE \r {property}}}{52} -\entry {\code {FAMILY \r {property}}}{52} -\entry {Ferguson, Michael}{18} -\entry {file formats for fonts}{46} -\entry {file mtimes, comparing}{35} -\entry {file recorder}{9} -\entry {File-handling \TeX {}}{22} -\entry {filename conventions, in input files}{12} -\entry {filenames starting with \samp {-}}{7} -\entry {first line of the main input file}{9} -\entry {fixed-point arithmetic}{4} -\entry {\code {FIXPT}}{4} -\entry {flag byte}{48} -\entry {floating-point arithmetic}{4} -\entry {floating-point values}{11} -\entry {fmt file, determining}{11} -\entry {fmt files}{17} -\entry {fmt files, sharing}{11} -\entry {\code {fmts \r {Make target}}}{4} -\entry {font aliases}{9} -\entry {font character code, translating}{20} -\entry {font design}{23} -\entry {font downloading for MetaPost labels}{31} -\entry {font file formats}{46} -\entry {font proofs}{27} -\entry {font utilities}{46} -\entry {font utilities, non-Web2c}{54} -\entry {\code {font_mem_size}}{5} -\entry {\code {fontforge}}{54} -\entry {\code {fontinst\r {, for creating virtual fonts}}}{54} -\entry {fonts, basic}{2} -\entry {\code {fontutils}}{54} -\entry {format files}{17} -\entry {formats for \TeX {}}{17} -\entry {\code {formats \r {Make target}}}{4} -\entry {fraction routines}{4} -\entry {Free Software Foundation documentation system}{18} -\entry {freedom of Web2c}{1} -\entry {\code {ftp.math.utah.edu}}{37} -\initial {G} -\entry {generating source specials}{16} -\entry {geometric designs}{23} -\entry {geometric font scaling}{46} -\entry {geometry for Metafont}{26} -\entry {\code {getopt_long_only}}{7} -\entry {GF files, explained}{46} -\entry {GF files, output by Metafont}{23} -\entry {GF format definition}{46} -\entry {GF output}{23} -\entry {GF, converting PK to}{47} -\entry {GF, converting to PK}{47} -\entry {\code {gftodvi}}{27} -\entry {\code {gftopk}}{47} -\entry {\code {gftopxl}}{54} -\entry {\code {gftype \r {GF validation}}}{49} -\entry {\code {gftype.web}}{46} -\entry {glue ratio representations}{11} -\entry {glue, memory for}{5} -\entry {glyph substitutions}{18} -\entry {gray font}{27} -\entry {Gruff, Billy Goat}{4} -\entry {\code {gsftopk}}{54} -\initial {H} -\entry {Harbison, Samuel P.}{12} -\entry {hardware and memory dumps}{11} -\entry {hash table, increasing size of}{5} -\entry {\code {hash_extra}}{5} -\entry {\code {headerbyte \r {information}}}{52} -\entry {height, in pixels}{48} -\entry {help, online}{7} -\entry {Henry, Patrick}{1} -\entry {Herberts, Mathias}{26} -\entry {hex character codes, in TCX files}{20} -\entry {history}{1} -\entry {Hobby, John}{1, 35} -\entry {horizontal escapement}{48, 50} -\entry {\code {hp2627}}{26} -\entry {human languages, supported in \TeX {}}{18} -\entry {human-readable text, converting DVI to}{42} -\entry {human-readable text, converting GF to}{49} -\entry {human-readable text, converting PK to}{47} -\entry {human-readable text, converting TFM to}{51} -\entry {human-readable text, converting VF to}{53} -\entry {hyphenation and languages}{18} -\entry {hyphenation patterns, creating}{21} -\initial {I} -\entry {ice cream}{1} -\entry {identifier case}{39} -\entry {identifier collisions}{40} -\entry {identifier length}{39} -\entry {identifiers with underlines}{40} -\entry {\code {ieeetr.bst}}{38} -\entry {\code {il1-t1.tcx}}{20} -\entry {\code {il2-t1.tcx}}{20} -\entry {Info format}{18} -\entry {initial form, enabling}{8} -\entry {initial Metafont}{24} -\entry {initial MetaPost}{32} -\entry {initial programs}{10} -\entry {initial \TeX {}}{17} -\entry {initializations, lengthy}{10} -\entry {input filenames}{12} -\entry {\code {install-bases \r {Make target}}}{4} -\entry {\code {install-fmts \r {Make target}}}{4} -\entry {\code {install-formats \r {Make target}}}{4} -\entry {\code {install-mems \r {Make target}}}{4} -\entry {installation}{2} -\entry {interaction between TCX files and \samp {-8bit}.}{21} -\entry {interaction mode}{8} -\entry {international characters}{19} -\entry {introduction}{1} -\entry {IPC}{21} -\entry {\code {IPC_DEBUG}}{4, 21} -\initial {J} -\entry {job name}{8} -\initial {K} -\entry {kerning table, in TFM files}{52} -\entry {keyboard character code, translating}{20} -\entry {Knuth, Donald E.}{1, 28} -\entry {\code {KPATHSEA_DEBUG}}{8} -\entry {\code {KRN \r {property}}}{52} -\initial {L} -\entry {label font}{27} -\entry {\code {LABEL \r {property}}}{52} -\entry {labels, extracting from MetaPost input}{35} -\entry {labels, for MetaPost}{32} -\entry {language support in \TeX {}}{18} -\entry {languages, hyphenation rules for}{21} -\entry {\LaTeX {}}{17} -\entry {Latin Modern}{54} -\entry {left side bearing}{48, 50} -\entry {legalisms}{55} -\entry {licensing terms}{1} -\entry {\code {LIG \r {property}}}{52} -\entry {ligature table, in TFM files}{52} -\entry {\code {LIGTABLE \r {property}}}{52} -\entry {linking binaries}{8} -\entry {links to binaries}{11} -\entry {literate programming}{39} -\entry {\code {litprog@shsu.edu}}{39} -\entry {LittleEndian machines}{11} -\entry {log file, Bib\TeX {}}{37} -\initial {M} -\entry {machine dependencies}{11} -\entry {machine-readable, converting property lists to}{53, 54} -\entry {MacKay, Pierre}{47} -\entry {macro packages, major \TeX {}}{17} -\entry {macros, basic}{2} -\entry {macros, predefining in memory dumps}{10} -\entry {magnification}{42, 43} -\entry {\code {main_memory}}{5} -\entry {Make targets, additional}{4} -\entry {\code {makempx}}{32} -\entry {\code {MAKEMPX_BINDIR}}{33} -\entry {Martin, Rick}{1} -\entry {Mathematical Reviews}{18} -\entry {mathematical typesetting}{14} -\entry {mem file, determining}{11} -\entry {mem files}{32} -\entry {mem files, plain only}{32} -\entry {mem files, sharing}{11} -\entry {memory dump to use, determining}{11} -\entry {memory dumps}{10} -\entry {memory dumps and hardware}{11} -\entry {memory dumps, contain date and time}{11} -\entry {memory dumps, creating}{10} -\entry {\code {mems \r {Make target}}}{4} -\entry {meta characters in filenames}{13} -\entry {Metafont}{23} -\entry {Metafont geometry}{26} -\entry {Metafont graphics}{26} -\entry {Metafont input files}{23} -\entry {Metafont invocation}{23} -\entry {Metafont meets PostScript}{30} -\entry {Metafont online support, new devices}{26} -\entry {Metafont source, prettyprinting}{27} -\entry {Metafont, compatibility in MetaPost}{32} -\entry {Metafont, initial}{24} -\entry {Metafont, MetaPost, and \TeX {}}{10} -\entry {MetaFun, enhanced MetaPost}{32} -\entry {\code {metafun.mp}}{32} -\entry {MetaPost}{30} -\entry {MetaPost and plain Metafont compatibility}{32} -\entry {MetaPost input files}{30} -\entry {MetaPost input, extracting labels from}{35} -\entry {MetaPost invocation}{30} -\entry {MetaPost labels}{32} -\entry {MetaPost source, prettyprinting}{28} -\entry {MetaPost, initial}{32} -\entry {MetaPost, \TeX {}, and Metafont}{10} -\entry {\code {metatype1}}{54} -\entry {\code {mf}}{23} -\entry {\code {mf.base}}{24} -\entry {\code {MFEDIT}}{12} -\entry {\code {mfplain.mem}}{32} -\entry {\code {mfput}}{23} -\entry {\code {mft}}{27} -\entry {\code {mftalk}}{26} -\entry {\code {MFTERM}}{26} -\entry {\code {mftmac.tex}}{27} -\entry {\code {mktexmf\r {, disabling}}}{23} -\entry {\code {mktextfM\r {, disabling}}}{14} -\entry {\code {mltex}}{18} -\entry {ML\TeX {}, enabling}{16} -\entry {mode needed to run Metafont}{23} -\entry {\code {mode_def}}{25} -\entry {\code {mode_setup}}{25} -\entry {modes file needed for Metafont}{25} -\entry {\code {modes.mf \r {recommended modes file}}}{25} -\entry {Morgan, Tim}{1} -\entry {Morris, Bob}{1} -\entry {\code {MPEDIT}}{12} -\entry {\code {mpgraph.ps}}{30} -\entry {\code {mpman.ps}}{30} -\entry {\code {mpost}}{30} -\entry {\code {mpost\r {, reason for name change}}}{2} -\entry {\code {mpost.mem}}{32} -\entry {\code {mpout}}{30} -\entry {\code {mproof.tex}}{31} -\entry {\code {MPSUPPORT}}{34} -\entry {\code {MPto}}{35} -\entry {MPto, invoked by MakeMPX}{32} -\entry {\code {MPTOTEX}}{33} -\entry {\code {MPTOTR}}{33} -\entry {\code {mptrap \r {Make target}}}{4} -\entry {mptrap test}{4} -\entry {\code {mptrap.readme}}{4} -\entry {mpx file, defined}{33} -\entry {MPX files, converting from DVI files}{33} -\entry {MPX files, creating from ditroff output}{34} -\entry {\code {mpxerr}}{33} -\entry {\code {mpxerr.dvi}}{33} -\entry {\code {mpxerr.log}}{33} -\entry {\code {mpxerr.t}}{33} -\entry {\code {mpxerr.tex}}{33} -\entry {mtimes of files, comparing}{35} -\entry {Multi-lingual \TeX {}}{18} -\entry {multiple DVI files, creating}{22} -\initial {N} -\entry {N tilde}{19} -\entry {new graphics support for Metafont}{26} -\entry {\code {NEWER}}{33} -\entry {\code {newer \r {file comparison}}}{35} -\entry {\code {newrow \r {GF command}}}{50} -\entry {\code {next}}{26} -\entry {\code {NO_X11WIN}}{26} -\entry {non-Unix system, compiling on}{4} -\entry {NUL, not allowed in filenames}{13} -\initial {O} -\entry {octal character codes, in TCX files}{20} -\entry {offset for overflow labels}{27} -\entry {older-than, file comparisons}{35} -\entry {Omega}{21} -\entry {online Metafont graphics}{26} -\entry {opcodes, showing DVI}{43} -\entry {optical font scaling}{46} -\entry {option conventions}{7} -\entry {origin}{48} -\entry {output directory, specifying}{8, 9} -\entry {output file location}{9} -\entry {output files, written by \TeX {} programs}{14} -\entry {\code {output_comment \r {for DVI files}}}{16} -\entry {overflow label offset}{27} -\initial {P} -\entry {packet length}{48} -\entry {page, starting}{42, 43} -\entry {parsing the first line}{8} -\entry {Pascal, creating from WEB}{39} -\entry {\code {patgen}}{21} -\entry {path searching}{9} -\entry {path searching debugging}{8} -\entry {PDF}{22} -\entry {pdf\TeX {}}{22} -\entry {permissions, legal}{55} -\entry {PFA and PFB conversion}{54} -\entry {\code {pfaedit}}{54} -\entry {PiC\TeX {}, increasing memory for}{5} -\entry {picture expressions}{33} -\entry {pixel height}{48} -\entry {pixel width}{48} -\entry {PK bitmaps from PostScript}{54} -\entry {PK files, explained}{46} -\entry {PK files, not output by Metafont}{23} -\entry {PK format definition}{46} -\entry {PK, converting GF to}{47} -\entry {PK, converting to GF}{47} -\entry {\code {pktogf}}{47} -\entry {\code {pktype \r {PK validation}}}{47} -\entry {\code {pktype.web}}{46} -\entry {PL files, explained}{46} -\entry {plain Metafont, compatibility in MetaPost}{32} -\entry {plain text, converting DVI to}{42} -\entry {plain text, converting GF to}{49} -\entry {plain text, converting PK to}{47} -\entry {plain text, converting TFM to}{51} -\entry {plain text, converting VF to}{53} -\entry {\code {plain.base}}{24} -\entry {\code {plain.bst}}{38} -\entry {\code {plain.fmt}}{17} -\entry {\code {plain.mem}}{32} -\entry {\code {plain.mft}}{28} -\entry {\code {pltotf}}{53} -\entry {pool file, writing}{39} -\entry {Poole, Simon}{26} -\entry {\code {pooltype}}{40} -\entry {portable filenames}{13} -\entry {PostScript fonts, and Troff}{31} -\entry {PostScript meets Metafont}{30} -\entry {PostScript output}{30} -\entry {PostScript to PK bitmaps}{54} -\entry {PostScript Type 1 font conversion}{54} -\entry {PostScript, and font scaling}{46} -\entry {\code {potrace}}{54} -\entry {Pragma ADE}{32} -\entry {predefined macros and memory dumps}{10} -\entry {prettyprinting Metafont source}{27} -\entry {prettyprinting WEB programs}{40} -\entry {primitives, new}{21} -\entry {printable characters, specifying}{20} -\entry {printer characteristics, for Metafont}{25} -\entry {production use}{10} -\entry {program name, determines memory dump}{11} -\entry {program names, special}{8, 16} -\entry {\code {prologues}}{32} -\entry {\code {prologues \r {and Troff in MetaPost}}}{33} -\entry {\code {prologues\r {, and EPSF output}}}{31} -\entry {\code {proof \r {mode}}}{23} -\entry {proof sheets, of fonts}{27} -\entry {property list format}{51} -\entry {property list, converting TFM to}{51} -\entry {property list, converting VF to virtual}{53} -\entry {\code {ps2pk}}{54} -\entry {\code {psfonts.map\r {, read by MetaPost}}}{31} -\entry {PXL files, explained}{46} -\entry {\code {pxtoch}}{54} -\initial {R} -\entry {Raichle, Bernd}{18} -\entry {reading, additional}{1} -\entry {readonly directory, running \TeX {} in}{9} -\entry {reallocation of arrays}{5} -\entry {redefined character substitutions}{19} -\entry {reference pixel}{48} -\entry {references}{56} -\entry {\code {regis}}{26} -\entry {Regis graphics support}{26} -\entry {regression testing}{16} -\entry {repeated rows}{49} -\entry {representation of strings}{41} -\entry {right side bearing}{48, 50} -\entry {right-to-left typesetting}{22} -\entry {Rokicki, Tomas}{1} -\entry {run length encoded bitmaps}{49, 50} -\entry {runtime options}{5} -\initial {S} -\entry {scaled pixels}{48, 50} -\entry {scaling of fonts}{46} -\entry {scanned images of fonts}{54} -\entry {security, and \code {{\tt \backslashcurfont }openout}}{14} -\entry {security, and output files}{14} -\entry {security, and shell escapes}{16} -\entry {\code {SetColor \r {ditroff command}}}{34} -\entry {shapes}{23} -\entry {sharing memory dumps}{11} -\entry {shell commands in \TeX {}}{16} -\entry {\code {shell_escape \r {enabling in \TeX {}}}}{16} -\entry {\code {siam.bst}}{38} -\entry {side bearings}{48, 50} -\entry {slant font}{27} -\entry {slides, producing}{18} -\entry {Sli\TeX {}}{18} -\entry {small Metafont memory and modes}{25} -\entry {\code {smode \r {and dynamic Metafont mode definition}}}{25} -\entry {sockets}{21} -\entry {space-terminated filenames}{12} -\entry {Spiderweb}{39} -\entry {Stallman, Richard}{1} -\entry {starting page}{42, 43} -\entry {Steele Jr., Guy L.}{12} -\entry {stopping at the first error}{8} -\entry {strategy, overall}{1} -\entry {string numbers, displaying}{40} -\entry {string pool, writing}{39} -\entry {string representation}{41} -\entry {style design, for Bib\TeX {}}{37} -\entry {style files}{28} -\entry {substitutions of font glyphs}{18} -\entry {\code {sun}}{26} -\entry {\code {sun-gfx.c}}{26} -\entry {Suntools}{26} -\entry {SunView}{26} -\entry {swap space, as array limit}{5} -\entry {swapping bytes}{11} -\entry {syntax of TCX files}{20} -\entry {\code {system \r {C library function}}}{16} -\initial {T} -\entry {T1 encoding and ISO input}{20} -\entry {Tachikawa, Elizabeth}{47} -\entry {\code {tangle}}{39} -\entry {targets, additional Make}{4} -\entry {\code {TCX \r {character translation files}}}{19} -\entry {\code {tek}}{26} -\entry {Tektronix}{26} -\entry {Tektronix 4014}{26} -\entry {\code {TERM}}{26} -\entry {terminator for filenames}{12} -\entry {terse output}{37} -\entry {\code {tex}}{14} -\entry {\code {TEX}}{33} -\entry {\code {TeX--XeT}}{22} -\entry {\code {tex.fmt}}{17} -\entry {\TeX {}, bibliographies for}{37} -\entry {\TeX {}, creating from Metafont}{27} -\entry {\TeX {}, creating from WEB}{40} -\entry {\TeX {}, description of}{14} -\entry {\TeX {}, extensions to}{21} -\entry {\TeX {}, format packages for}{17} -\entry {\TeX {}, initial}{17} -\entry {\TeX {}, input files found}{14} -\entry {\TeX {}, invocation}{14} -\entry {\TeX {}, Metafont, and MetaPost}{10} -\entry {\TeX {}, Web2c implementation of}{1} -\entry {\code {TEXBIB\r {, search path for bib files}}}{37} -\entry {\code {TEXEDIT}}{12} -\entry {\code {texfonts.map}}{9} -\entry {Texinfo}{18} -\entry {\code {texmf.cnf}}{9} -\entry {\code {texmfmp.c}}{26} -\entry {\code {texmfmp.c \r {and \code {openoutnameok}}}}{14} -\entry {\code {TEXMFOUTPUT\r {, used if \samp {.} unwritable}}}{9} -\entry {\code {texput}}{14} -\entry {text, extracting from MetaPost input}{35} -\entry {TFM files, converting property lists to}{53} -\entry {TFM files, explained}{46} -\entry {TFM files, memory for}{5} -\entry {TFM files, output by Metafont}{23} -\entry {TFM files, output by MetaPost}{30} -\entry {TFM width of characters}{48, 50} -\entry {\code {tftopl}}{51} -\entry {three programs}{10} -\entry {time and date, in memory dumps}{11} -\entry {title font}{27} -\entry {toolkits, X}{26} -\entry {torture tests}{4} -\entry {translation file for \TeX {}, specifying}{9} -\entry {translation from WEB to C}{1} -\entry {\code {trap \r {Make target}}}{4} -\entry {trap test}{4} -\entry {\code {trapman.tex}}{4} -\entry {\code {trchars.adj}}{34} -\entry {Trickey, Howard}{1} -\entry {\code {trip \r {Make target}}}{4} -\entry {trip test}{4} -\entry {\code {tripman.tex}}{4} -\entry {\code {triptrap \r {Make target}}}{4} -\entry {\code {TROFF}}{33} -\entry {Troff, and MetaPost}{31} -\entry {Troff, WEB for}{39} -\entry {Trojan horses and \TeX {} programs}{14} -\entry {TUGboat bibliography}{37} -\entry {Type 1 conversion}{54} -\entry {type design, personal}{25} -\entry {type programs, DVI}{42} -\entry {type programs, GF}{49} -\entry {type programs, PK}{47} -\entry {type programs, pool}{40} -\entry {typeface families}{23} -\entry {typeface specimen sheets}{54} -\entry {typesetting}{14} -\initial {U} -\entry {Unicode}{21} -\entry {Unicode input}{15} -\entry {\code {uniterm}}{26} -\entry {\code {unsrt.bst}}{38} -\entry {using local codepage to display messages}{9} -\entry {UTF-8 input}{15} -\initial {V} -\entry {validation, of DVI files}{42} -\entry {validation, of GF files}{49} -\entry {validation, of PK files}{47} -\entry {validation, of TFM files}{51} -\entry {validation, of VF files}{53} -\entry {\code {verbatimtex \r {MetaPost command}}}{35} -\entry {verbose Bib\TeX {} output, suppressing}{37} -\entry {verbosity, enabling}{7} -\entry {version number, finding}{7} -\entry {vertical escapement}{50} -\entry {VF files, converting property lists to}{54} -\entry {\code {vftovp}}{53} -\entry {virgin programs}{10} -\entry {virtual font creation}{54} -\entry {virtual fonts, expanding}{42} -\entry {\code {virtual-fonts.knuth}}{46} -\entry {\code {virtualfonts.txt}}{46} -\entry {\code {vptovf}}{54} -\initial {W} -\entry {\code {weave}}{40} -\entry {WEB}{39} -\entry {WEB pool files, displaying}{40} -\entry {WEB programs, compiling}{39} -\entry {WEB programs, typesetting}{40} -\entry {\code {WEB2C\r {, search path for TCX files}}}{20} -\entry {Weber, Olaf}{1} -\entry {\code {webmac.tex}}{40} -\entry {\code {webman.tex}}{39} -\entry {whitespace, in TCX files}{20} -\entry {whitespace-terminated filenames}{12} -\entry {width, device-independent}{48, 50} -\entry {width, in pixels}{48} -\entry {word processor, not}{14} -\entry {writing memory dumps}{10} -\initial {X} -\entry {X bitmap fonts}{54} -\entry {X class name for Metafont}{26} -\entry {x offset}{48} -\entry {X resources}{26} -\entry {X toolkits and Metafont}{26} -\entry {\code {x X \r {ditroff device control}}}{34} -\entry {\code {xampl.bib}}{37} -\entry {\code {xbfe\r {, bitmap font editor}}}{54} -\entry {\code {xfed\r {, bitmap font editor}}}{54} -\entry {\code {xfedor\r {, bitmap font editor}}}{54} -\entry {\code {Xlib}}{26} -\entry {Xlib support}{26} -\entry {\code {Xt}}{26} -\entry {Xt support}{26} -\entry {\code {xterm}}{26} -\initial {Y} -\entry {y offset}{48} |