[TxMt] LaTeX / Bibliography Completion and Label From Document problem

Özgür Gökmen og at pyromedia.org
Fri Nov 17 13:32:23 UTC 2006


Strange behaviour of Bibliography Completion and Label From Document  
commands accessed through option-esc. Description of the problem, and  
workaround based on my correspondence with Charilaos (Harris) Skiadas  
are below for archival purpose. Thanks Harris!

-- Working system

PowerPC G4, Mac OS X Version 10.4.8, TexMate Version 1.5.4 (1324),  
TexLive Full Installation (2006/11/07) [Tex (based upon TeX Live)] /  
MacTeX (10 November 2006)

-- Description of the problem

option-esc results in:

\footcite{sh: line 1: /usr/local/TeXLive/bin/i386-apple-darwin8.6.1/ 
kpsewhich: cannot execute binary file sh: line 1: /usr/local/teTeX/ 
bin/i386-apple-darwin8.6.1/kpsewhich: cannot execute binary file  
cite_key}

\ref{sh: line 1: /usr/local/TeXLive/bin/i386-apple-darwin8.8.1/ 
kpsewhich: cannot execute binary file sec:section_name}

\ref{sh: line 1: /usr/local/TeXLive/bin/i386-apple-darwin8.8.1/ 
kpsewhich: cannot execute binary file fig:label_name}

TeXLive and MacTeX installations modify /etc/profile, and set the  
path as:
PATH="$PATH:/usr/local/TeXLive/bin/powerpc-apple-darwin-current",  
which is actually an alias for /usr/local/TeXLive/bin/powerpc-apple- 
darwin7.9.0/.

The scripts of both commands use first `which kpsewhich`, and only if  
that fails, `locate kpsewhich` to find out where kpsewhich lives.

Running the which kpsewhich command in the terminal returns:
/usr/local/TeXLive/bin/powerpc-apple-darwin-current/kpsewhich

Running the locate kpsewhich command in the terminal returns:
/usr/local/TeXLive/bin/i386-apple-darwin8.8.1/kpsewhich
/usr/local/TeXLive/bin/powerpc-apple-darwin7.9.0/kpsewhich
/usr/local/TeXLive/man/man1/kpsewhich.1
/usr/local/TeXLive/texmf.texlive/doc/man/man1/kpsewhich.1

The `which kpsewhich' command in both scripts fails -- according to  
my humble opinion, due to the fact that what is finds is not the  
actual file but an alias. Then `locate kpsewhich` points to the first  
kpsewhich it finds on the system, which is an intel binary. Thus it  
declares "[...] cannot execute binary file". (If you have the Basic  
Installation of TeXLive, which does not come with intel binaries, it  
will declare "[...] cannot find binary file".)

-- Workaround

Bibliograpyh Completion, and Label From Document commands are based  
on the following scripts: LatexCitekeys.rb, and  
LatexLabelCompletions.rb. Both of them live in /Applications/ 
TextMate.app/Contents/SharedSupport/Support/bin. Edit both scripts,  
replacing the following loop -- lines 51-55, and 11-15, respectively:

   if `which kpsewhich`.match(/^no kpsewhich/) then
     kpsewhich = `locate kpsewhich`.split("\n").grep(/kpsewhich$/)[0]
   else
     kpsewhich = "kpsewhich"
   end

with a statement indicating the correct path to the powerpc kpsewhich  
binary.

kpsewhich = "/usr/local/TeXLive/bin/powerpc-apple-darwin-current/ 
kpsewhich"
or
kpsewhich = "/usr/local/TeXLive/bin/powerpc-apple-darwin7.9.0/kpsewhich"
should both work.

Check your /etc/profile or better run "echo $PATH" in the terminal to  
confirm your path.

--
Özgür Gökmen | og at pyromedia.org






More information about the textmate mailing list