[XeTeX] public xelatex.fmt

Bruno Voisin bvoisin at mac.com
Wed Jun 4 20:27:45 CEST 2008


Le 4 juin 08 à 19:22, maxwell at umiacs.umd.edu a écrit :

>> Regarding where xelatex looks for format files, you can try
>>
>> 	kpsewhich --progname=xelatex --show-path=.fmt
>
> .:!!/home/mmaxwell/.texmf-config/web2c:!!/home/mmaxwell/.texmf-var/ 
> web2c:/home/mmaxwell/texmf/web2c:!!/usr/share/texmf-config/web2c:!!/ 
> usr/share/texmf-var/web2c:!!/usr/local/share/texmf/web2c:!!/groups/ 
> tools/texlive/2007/texmf/web2c:!!/usr/share/texmf-dist/web2c
>
> OK, what do all those '!!' mean?  The kpsewhich man page doesn't  
> mention
> them.  And the last dir (/usr/share/texmf-dist/web2c) in the output of
> this command doesn't exist.  The kpsewhich man page does say "the  
> search
> path for TeX source files is used", and I should presumably change  
> it to
> remove the nonexistent dir (and maybe substitute some other dirs); but
> what determines that search path?  Again, the man page doesn't say.

For that level of detail, you need to look at the full doc of  
kpathsea, not just the man page of kpsewhich. Normally the following  
should display this doc for you:

texdoc kpathsea

Otherwise the doc should be at something like /usr/local/share/texmf/ 
doc/kpathsea/kpathsea.pdf or /groups/tools/texlive/2007/texmf/doc/ 
kpathsea/kpathsea.pdf (for me on Mac OS X it's /usr/local/texlive/2007/ 
texmf/doc/kpathsea/kpathsea.pdf).

There, you'll find:

"If a particular path element begins with ‘!!’, however, only the  
database will be searched for that element, never the disk."

And regarding the search path, it's determined in texmf.cnf. Again,  
kpsewhich is your friend, yielding in my case:

$ kpsewhich texmf.cnf
/usr/local/texlive/2007/texmf/web2c/texmf.cnf

There, a number of variables are defined, each associated with a given  
texmf tree, like

TEXMFCONFIG = $HOME/.texlive2007/texmf-config

And then the ordering in which these various trees are searched is  
also defined, like

TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!$TEXMFSYSCONFIG,!! 
$TEXMFSYSVAR,!!$TEXMFMAIN,!!$TEXMFLOCAL,!!$TEXMFDIST}

Of course, as pointed out by Jonathan, you may have shell  
initialization files adding another layer by redefining some of these  
environment variables, like TEXINPUTS. Unless you really know what  
you're doing, I would advise FWIW against this: the default setup in  
texmf.cnf is flexible enough for most cases.

This file includes a handful of very helpful self-explanatory  
comments, like, regarding your first question,

% // means to search subdirectories (recursively).
% A leading !! means to look only in the ls-R db, never on the disk.
% In this file, either ; or : can be used to separate path components.
% A leading/trailing/doubled path separator in the paths will be
%   expanded into the compile-time default. Probably not what you want.
%
% You can use brace notation, for example: /usr/local/{mytex,othertex}
% expands to /usr/local/mytex:/usr/local/othertex.  Instead of the comma
% you can use the path separator: /usr/local/{mytex:othertex} also  
expands
% to /usr/local/mytex:/usr/local/othertex.

Bruno Voisin


More information about the XeTeX mailing list