Kpathsea Library for Version 6.3.3 February 2021

Kpathsea Library for Version 6.3.3 February 2021

Kpathsea library for version 6.3.3 February 2021 Karl Berry Olaf Weber Taco Hoekwater https://tug.org/kpathsea This file documents the Kpathsea library for path searching. Copyright c 1996{2021 Karl Berry & Olaf Weber. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the con- ditions 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 lan- guage, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the TEX Users Group. i Table of Contents 1 Introduction ::::::::::::::::::::::::::::::::::::: 1 1.1 History ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 1 2 unixtex.ftp: Obtaining TEX :::::::::::::::::::: 3 3 Security :::::::::::::::::::::::::::::::::::::::::: 4 4 TEX directory structure::::::::::::::::::::::::: 5 5 Path searching ::::::::::::::::::::::::::::::::::: 7 5.1 Searching overview ::::::::::::::::::::::::::::::::::::::::::::: 7 5.2 Path sources:::::::::::::::::::::::::::::::::::::::::::::::::::: 8 5.2.1 Config files :::::::::::::::::::::::::::::::::::::::::::::::: 8 5.3 Path expansion :::::::::::::::::::::::::::::::::::::::::::::::: 10 5.3.1 Default expansion :::::::::::::::::::::::::::::::::::::::: 10 5.3.2 Variable expansion:::::::::::::::::::::::::::::::::::::::: 11 5.3.3 Tilde expansion::::::::::::::::::::::::::::::::::::::::::: 11 5.3.4 Brace expansion :::::::::::::::::::::::::::::::::::::::::: 12 5.3.5 KPSE_DOT expansion :::::::::::::::::::::::::::::::::::::: 12 5.3.6 Subdirectory expansion ::::::::::::::::::::::::::::::::::: 12 5.4 Casefolding search ::::::::::::::::::::::::::::::::::::::::::::: 13 5.4.1 Casefolding rationale ::::::::::::::::::::::::::::::::::::: 13 5.4.2 Casefolding examples ::::::::::::::::::::::::::::::::::::: 13 5.5 Filename database (ls-R) ::::::::::::::::::::::::::::::::::::: 15 5.5.1 ls-R ::::::::::::::::::::::::::::::::::::::::::::::::::::: 15 5.5.2 Filename aliases :::::::::::::::::::::::::::::::::::::::::: 16 5.5.3 Database format:::::::::::::::::::::::::::::::::::::::::: 16 5.6 kpsewhich: Standalone path searching ::::::::::::::::::::::::: 17 5.6.1 Path searching options:::::::::::::::::::::::::::::::::::: 17 5.6.2 Specially-recognized files for kpsewhich ::::::::::::::::::: 21 5.6.3 Auxiliary tasks ::::::::::::::::::::::::::::::::::::::::::: 22 5.6.4 Standard options ::::::::::::::::::::::::::::::::::::::::: 24 6 TEX support :::::::::::::::::::::::::::::::::::: 25 6.1 Supported file formats ::::::::::::::::::::::::::::::::::::::::: 25 6.2 File lookup :::::::::::::::::::::::::::::::::::::::::::::::::::: 28 6.3 Glyph lookup:::::::::::::::::::::::::::::::::::::::::::::::::: 29 6.3.1 Basic glyph lookup ::::::::::::::::::::::::::::::::::::::: 29 6.3.2 Fontmap ::::::::::::::::::::::::::::::::::::::::::::::::: 30 6.3.3 Fallback font ::::::::::::::::::::::::::::::::::::::::::::: 31 6.4 Suppressing warnings :::::::::::::::::::::::::::::::::::::::::: 31 ii 6.5 mktex scripts :::::::::::::::::::::::::::::::::::::::::::::::::: 31 6.5.1 mktex configuration::::::::::::::::::::::::::::::::::::::: 32 6.5.2 mktex script names ::::::::::::::::::::::::::::::::::::::: 34 6.5.3 mktex script arguments ::::::::::::::::::::::::::::::::::: 34 7 Programming ::::::::::::::::::::::::::::::::::: 35 7.1 Programming overview :::::::::::::::::::::::::::::::::::::::: 35 7.2 Calling sequence::::::::::::::::::::::::::::::::::::::::::::::: 35 7.3 Program-specific files :::::::::::::::::::::::::::::::::::::::::: 37 7.4 Programming with config files ::::::::::::::::::::::::::::::::: 38 8 Reporting bugs ::::::::::::::::::::::::::::::::: 39 8.1 Bug checklist :::::::::::::::::::::::::::::::::::::::::::::::::: 39 8.2 Mailing lists ::::::::::::::::::::::::::::::::::::::::::::::::::: 40 8.3 Debugging :::::::::::::::::::::::::::::::::::::::::::::::::::: 40 8.4 Logging ::::::::::::::::::::::::::::::::::::::::::::::::::::::: 42 8.5 Common problems :::::::::::::::::::::::::::::::::::::::::::: 42 8.5.1 Unable to find files ::::::::::::::::::::::::::::::::::::::: 42 8.5.2 Slow path searching :::::::::::::::::::::::::::::::::::::: 43 8.5.3 Unable to generate fonts :::::::::::::::::::::::::::::::::: 43 8.5.4 TEX or Metafont failing::::::::::::::::::::::::::::::::::: 44 Index:::::::::::::::::::::::::::::::::::::::::::::::: 46 1 1 Introduction This manual corresponds to version 6.3.3 of the Kpathsea library, released in February 2021. The library's fundamental purpose is to return a filename from a list of directories specified by the user, similar to what shells do when looking up program names toexecute. The following software, all of which is maintained in parallel, uses this library: • Dviljk (see the `dvilj' man page) • Dvipsk (see Dvips: A DVI driver) • GNU font utilities (see GNU font utilities) • Web2c (see Web2c: A TEX implementation) • Xdvik (see the `xdvi' man page) Other software that we do not maintain also uses it. Kpathsea is now maintained as part of the TEX Live distribution (https://tug.org/ texlive), which includes several more Kpathsea-using programs. For information on con- figuration, building, installing, and more, see Building TEX Live. The library is still actively maintained. If you have comments or suggestions, please send along (see Chapter 8 [Reporting bugs], page 39). The Kpathsea library is distributed under the GNU Library General Public License (LGPL), version 2.1 or (at your option) any later version. In short, this means if you write a program using the library, you must (offer to) distribute the source to the library, along with any changes you have made, and allow anyone to modify the library source and dis- tribute their modifications. It does not mean you have to distribute the source toyour program using the library, although we hope you will. See accompanying files for the text of the GNU licenses, or https://gnu.org/licenses. If you know enough about TEX to be reading this manual, then you (or your institution) should consider joining the TEX Users Group (if you're already a member, thanks!). TUG produces the periodical TUGboat, sponsors an annual meeting and publishes the proceed- ings, and arranges courses on TEX for all levels of users throughout the world. See https:// tug.org for information. 1.1 History This section is for those people who are curious about how the library came about. If you like to read historical accounts of software, we urge you to seek out the GNU Autoconf manual and the \Errors of TEX" paper by Don Knuth, published in his book Digital Typography, among other places. [Karl writes.] My first ChangeLog entry for Web2c seems to be February 1990, but I may have done some work before then. In any case, Tim Morgan and I were jointly maintaining it for a time. (I should mention here that Tim had made Web2c into a real distribution long before I had ever used it or even heard of it, and Tom Rokicki did the original implementation. When I started, I was using pxp and pc on VAX 11/750's and the hot new Sun 2 machines.) It must have been later in 1990 and 1991 that I started working on TEX for the Impatient. Dvips, Xdvi, Web2c, and the GNU fontutils (which I was also writing at the time) all Chapter 1: Introduction 2 used different environment variables, and, more importantly, had different bugs intheir path searching. This became extremely painful, as I was stressing everything to the limit working on the book. I also desperately wanted to implement subdirectory searching, since I couldn't stand putting everything in one big directory, and also couldn't stand having to explicitly specify cm, pandora, . in a path. In the first incarnation, I just hacked separately on each program|that was the original subdirectory searching code in both Xdvi and Dvips. That is, I tried to go with the flow in each program, rather than changing the program's calling sequences to conform to new routines. Then, as bugs inevitably appeared, I found I was fixing the same thing three times (Web2c and fontutils were already sharing code, since I maintained both of those|there was no Dvipsk or Xdvik or Dviljk at this point). After a while, I finally started sharing source files. They weren't yet a library, though. I just kept things up to date withshell scripts. (I was developing on a 386 running ISC 2.2 at the time, and so didn't have symbolic links. An awful experience.) The ChangeLogs for Xdvik and Dvipsk record initial releases of those distributions in May and June 1992. I think it was because I was tired of the different configuration strategies of each program, not so much because of the path searching. Autoconf was being developed by David MacKenzie and others, and I was adapting it to TEX and friends. I started to make a separate library that other programs could link with on my birthday in April 1993, according to the ChangeLog. I don't remember exactly why I finally took the time to make it a separate library; a conversation with david zuhn initiated it. Just seemed like it was time. Dviljk got started in March 1994 after I bought a Laserjet 4. (Kpathsea work got suspended while Norm Walsh and I, with Gustaf Neumann's help, implemented a way for TEX to get at all those neat builtin LJ4 fonts . such a treat to have something to typeset

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    56 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us