[OS X TeX] BibTeX Can't Find Style that pdfTeX can

Gerben Wierda Sherlock at rna.nl
Fri Jul 12 14:53:08 EDT 2002

On Friday, July 12, 2002, at 06:04 , Michael Hanson wrote:

> 	I have found that placing .bst files anywhere in 
> ~/Library/texmf/bibtex/ (i.e. within an arbitrarily named subdirectory 
> of this path) allows them to be seen by BibTeX.  However, I notice that 
> at least two other list members suggest ~/Library/texmf/bibtex/bst/ for 
> .bst files.  Is there any documentation about the "proper" (or "best 
> practices") location of files in the texmf hierarchy?  I scoured CTAN 
> and a few LaTeX books (many months back) without success.  I must agree 
> with Gerben's comment at the beginning of README.howtexfindsfiles:  
> "TeX's way of finding files is quite rich and complicated and at 
> certain times counterintuitive."  This is certainly the case for those 
> of us switching from an OS 9 TeX environment (OzTeX in my case), that 
> was much less, well, particular about the location of files.  Is any 
> practical file organization overview available for those of us forced 
> by OS X to become our own sysadmins?  TIA!

Explanation: what you see is a lot of TEXINPUTS.bla definitions, where 
bla is some application (like bibtex). This is normally followed by 
something like

	= .;$TEXMF/tex/{amstex,plain,generic,}//

(this is from amstex) this means:
	look at the current dir (.) first
	then look in all the TEXMF dirs (~/Library/texmf, 
/usr/local/teTeX/share/texmf.local, /usr/local/teTeX/share/texmf) and in 
those dirs look in three subdirectories of texmf (amstex, plain, 
generic, --empty--) recursive (because of the // at the end). This is 
expanded from right to left, which means that the above means that the 
following order applies:
	. (not recursively)
	~/Library/texmf/tex/amstex (recursively)
	/usr/local/teTeX/share/texmf.local/tex/amstex (recursively)
	/usr/local/teTeX/share/texmf/tex/amstex (recursively)
	~/Library/texmf/tex/plain (recursively)
	/usr/local/teTeX/share/texmf.local/tex/plain (recursively)
	/usr/local/teTeX/share/texmf/tex/plain (recursively)
	~/Library/texmf/tex/generic (recursively)
	/usr/local/teTeX/share/texmf.local/tex/generic (recursively)
	/usr/local/teTeX/share/texmf/tex/generic (recursively)
	~/Library/texmf/tex (recursively)
	/usr/local/teTeX/share/texmf.local/tex (recursively)
	/usr/local/teTeX/share/texmf/tex (recursively)

As you might notice, the last three include the 9 before it (don't ask, 
I did not make this up). Also note that this means that it is not so 
that ~/Library is always searched before one of the system directories, 
which is somewhat counter to what you would expect.

Here are the lines from the texmf.cnf files (I leave expansion by hand 
for bibtex to the interested reader).


% Plain TeX.  Have the command tex check all directories as a last
% resort, we may have plain-compatible stuff anywhere.
TEXINPUTS.tex = .;$TEXMF/tex/{plain,generic,}//

% Other plain-based formats.
TEXINPUTS.amstex = .;$TEXMF/tex/{amstex,plain,generic,}//
TEXINPUTS.csplain = .;$TEXMF/tex/{csplain,plain,generic,}//
TEXINPUTS.eplain  = .;$TEXMF/tex/{eplain,plain,generic,}//
TEXINPUTS.ftex = .;$TEXMF/tex/{formate,plain,generic,}//
TEXINPUTS.jadetex = .;$TEXMF/tex/{jadetex,plain,generic,}//
TEXINPUTS.mex = .;$TEXMF/tex/{mex,plain,generic,}//
TEXINPUTS.texinfo = .;$TEXMF/tex/{texinfo,plain,generic,}//

% LaTeX 2e specific macros are stored in latex/, macros that can only be
% used with 2.09 in latex209/.  In addition, we look in the directory
% latex209, useful for macros that were written for 2.09 and do not
% mention 2e at all, but can be used with 2e.
TEXINPUTS.cslatex = .;$TEXMF/tex/{cslatex,csplain,latex,generic,}//
TEXINPUTS.platex  = .;$TEXMF/tex/{platex,latex,generic,}//
TEXINPUTS.latex = .;$TEXMF/tex/{latex,generic,}//
TEXINPUTS.latex209 = .;$TEXMF/tex/{latex209,generic,latex,}//

% Fontinst needs to read afm files.
TEXINPUTS.fontinst = .;$TEXMF/tex//;$TEXMF/fonts/afm//

% MLTeX.
TEXINPUTS.frlatex = .;$TEXMF/{mltex,tex}/{french,latex,generic,}//
TEXINPUTS.frtex   = .;$TEXMF/{mltex,tex}/{french,plain,generic,}//
TEXINPUTS.mllatex = .;$TEXMF/{mltex,tex}/{latex,generic,}//
TEXINPUTS.mltex = .;$TEXMF/{mltex,tex}/{plain,generic,}//

% e-TeX.  This form of the input paths is borrowed from teTeX.  A certain
% variant of TDS is assumed here, unaffected by the build variables.
TEXINPUTS.elatex   = .;$TEXMF/{etex,tex}/{latex,generic,}//
TEXINPUTS.etex     = .;$TEXMF/{etex,tex}/{plain,generic,}//

% pdfTeX.  This form of the input paths is borrowed from teTeX.  A 
% variant of TDS is assumed here, unaffected by the build variables.
TEXINPUTS.pdfamstex = .;$TEXMF/{pdftex,tex}/{amstex,plain,generic,}//
TEXINPUTS.pdfcslatex = 
TEXINPUTS.pdfcsplain = .;$TEXMF/{pdftex,tex}/{csplain,plain,generic,}//
TEXINPUTS.pdfjadetex = .;$TEXMF/{pdftex,tex}/{jadetex,plain,generic,}//
TEXINPUTS.pdflatex = .;$TEXMF/{pdftex,tex}/{latex,generic,}//
TEXINPUTS.pdfmex   = .;$TEXMF/{pdftex,tex}/{mex,plain,generic,}//
TEXINPUTS.pdftex   = .;$TEXMF/{pdftex,tex}/{plain,generic,}//
TEXINPUTS.pdftexinfo = .;$TEXMF/{pdftex,tex}/{texinfo,plain,generic,}//

% pdfeTeX.
TEXINPUTS.pdfelatex = 
TEXINPUTS.pdfetex   = 

% Omega.
TEXINPUTS.lambda = .;$TEXMF/{omega,tex}/{lambda,latex,generic,}//
TEXINPUTS.omega = .;$TEXMF/{omega,tex}/{plain,generic,}//

% Context macros by Hans Hagen:
TEXINPUTS.context = .;$TEXMF/{pdftex,etex,tex}/{context,plain,generic,}//

% odd formats  needing their own paths
TEXINPUTS.lamstex  = .;$TEXMF/tex/{lamstex,plain,generic,}//
TEXINPUTS.lollipop = .;$TEXMF/tex/{lollipop,plain,generic,}//
TEXINPUTS.mex-pl = .;$TEXMF/tex/{mex,plain,generic,}//
TEXINPUTS.platex-pl  = .;$TEXMF/tex/{platex,latex,generic,}//
TEXINPUTS.pdfplatex = .;$TEXMF/{pdftex,tex}/{platex,latex,generic,}//
TEXINPUTS.pdfmex-pl = .;$TEXMF/{pdftex,tex}/{mex,plain,generic,}//
TEXINPUTS.pdfemex   = 
TEXINPUTS.pdfemex-pl = 

% Earlier entries override later ones, so put this last.
TEXINPUTS = .;$TEXMF/tex/{generic,}//

% Metafont, MetaPost inputs.
MFINPUTS = .;$TEXMF/metafont//;{$TEXMF/fonts,$VARTEXFONTS}/source//
MPINPUTS = .;$TEXMF/metapost//

% Dump files (fmt/base/mem) for vir{tex,mf,mp} to read (see 
% and string pools (.pool) for ini{tex,mf,mp}.  It is silly that we have 
% paths and directories here (they all resolve to a single place by 
% but historically ...
MFBASES = .;$TEXMF/web2c
MPMEMS = .;$TEXMF/web2c
TEXPOOL = .;$TEXMF/web2c
MFPOOL = .;$TEXMF/web2c
MPPOOL = .;$TEXMF/web2c

% Device-independent font metric files.
VFFONTS = .;$TEXMF/fonts/vf//

% The $MAKETEX_MODE below means the drivers will not use a cx font when
% the mode is ricoh.  If no mode is explicitly specified, kpse_prog_init
% sets MAKETEX_MODE to /, so all subdirectories are searched.  See the 
% The modeless part guarantees that bitmaps for PostScript fonts are 
PKFONTS = .;{$TEXMF/fonts,$VARTEXFONTS}/pk/{$MAKETEX_MODE,modeless}//

% Similarly for the GF format, which only remains in existence because
% Metafont outputs it (and MF isn't going to change).

% A backup for PKFONTS and GFFONTS. Not used for anything.

% A place to puth everything that doesn't fit the other font categories.
MISCFONTS = .;$TEXMF/fonts/misc//

% For texfonts.map and included map files used by mktexpk.
% See ftp://ftp.tug.org/tex/fontname.tar.gz.

% BibTeX bibliographies and style files.
BIBINPUTS = .;$TEXMF/bibtex/{bib,}//
BSTINPUTS = .;$TEXMF/bibtex/{bst,}//

% MFT style files.

% PostScript headers, prologues (.pro), encodings (.enc) and fonts.
TEXPSHEADERS = .;$TEXMF/{dvips,pdftex,tex,fonts/type1}//

% PostScript Type 1 outline fonts.
T1FONTS = .;$TEXMF/fonts/type1//

% PostScript AFM metric files.
AFMFONTS = .;$TEXMF/fonts/afm//

% TrueType outline fonts.
TTFONTS = .;$TEXMF/fonts/truetype//

% Type 42 outline fonts.
T42FONTS = .;$TEXMF/fonts/type42//

% Dvips' config.* files (this name should not start with `TEX'!).
TEXCONFIG = .;$TEXMF/dvips//

% Makeindex style (.ist) files.
INDEXSTYLE = .;$TEXMF/makeindex//

% Used by DMP (ditroff-to-mpx), called by makempx -troff.
TRFONTS = /usr/lib/font/devpost
MPSUPPORT = .;$TEXMF/metapost/support

% For xdvi to find mime.types and .mailcap, if they do not exist in
% $HOME.  These are single directories, not paths.
% (But the default mime.types, at least, may well suffice.)

% TeX documentation and source files, for use with kpsewhich.
TEXDOCS = .;$TEXMF/doc//
TEXSOURCES = .;$TEXMF/source//

% Web and CWeb input paths.

% Omega-related fonts and other files.  The odd construction for OFMFONTS
% makes it behave in the face of a definition of TFMFONTS.  Unfortunately
% no default substitution would take place for TFMFONTS, so an explicit
% path is retained.
OTPINPUTS = .;$TEXMF/omega/otp//
OCPINPUTS = .;$TEXMF/omega/ocp//

% Some additional input variables for several programs.  If you add
% a program that uses the 'other text files' or 'other binary files'
% search formats, you'll want to add their variables here as well.
T4HTINPUTS   = .;$TEXMF/tex4ht//

% xdvik with type1 support can share some files with dvips
XDVIINPUTS = .;$TEXMF/{xdvi,dvips//}

%% The mktex* scripts rely on KPSE_DOT. Do not set it in the environment.

% This definition isn't used from this .cnf file itself (that would be
% paradoxical), but the compile-time default in paths.h is built from it.
% The SELFAUTO* variables are set automatically from the location of
% argv[0], in kpse_set_progname.
% The TETEXDIR stuff isn't likely to relevant unless you're using teTeX,
% but it doesn't hurt.
% For security reasons, it is better not to have . part of the path.

% files for xdvi. TeXGSInstaller does not support X, but I have been 
told that
% the following lines make it possible for people to use my distribution
PKFONTS.XDvi    = .:$TEXMF/%s:$VARTEXFONTS/pk/{%m,modeless}//
VFFONTS.XDvi    = .:$TEXMF/%s
PSHEADERS.XDvi  = .:$TEXMF/%q{dvips,fonts/type1}//
PSFIGURES.XDvi  = .:$TEXMF/%q{dvips,tex}//

Threaded list archives can be found at:
To UNSUBSCRIBE, send email to <info at email.esm.psu.edu> with
"unsubscribe macosx-tex" (no quotes) in the body.
For additional HELP, send email to <info at email.esm.psu.edu> with
"help" (no quotes) in the body.

More information about the MacOSX-TeX mailing list