[OS X TeX] Applescript fot BBEit+TeXShop+pdfsync

Claus Gerhardt gerhardt at math.uni-heidelberg.de
Tue Nov 16 10:57:58 EST 2004


Below is an Applescript for people using BBEdit as editor. The tex file 
has to be a TeXShop file, but it can be opened, saved and edited in 
BBEdit.

The script runs pdflatex - or a shell script of your choice - and 
catches any latex errors for BBEdit. If there are no errors, then it 
tells TeXShop  to open resp. refresh the tex file, tpyesetting it 
again, and putting the cursor in the same line as it was in BBEdit. 
That way you can use pdfsync. If you don't want pdfsync, then the 
typesetting part in TeXShop can be commented, or you can use an altered 
  copy of the script.

When I tested the script, TeXShop's preferences weren't set for 
external editor - only the preview update was checked.

My TeX-Scripts-BBEdit should be installed.

Claus


-- Applescript
-- The file has to be a TeXShop file, but can be opened, saved and 
edited in BBEdit.
-- pdflatex_special
-- Claus Gerhardt, Nov. 2004

(* The subroutine setnamebbedit returns baseName, texName, pdfName, 
namePath, dirName, dirNameunquoted, and saves the document of window 
texName.
*)
set previewer to "TeXShop"
--set previewer to "Acrobat  6.0.1 Professional"
--set previewer to "Preview"

if previewer is equal to "Acrobat  6.0.1 Professional" then
	set process_name to "acrobat"
else
	set process_name to previewer
end if

tell application "BBEdit"
	get file of window 1
	set filepath to result
	set fileName to POSIX path of filepath as string
	
	
	
	set scriptPath to (do shell script "dirname " & 
"~/Library/TeXShop/Scripts/ex")
	set scriptPath to scriptPath & "/setnamebbedit.scpt"
	set scriptName to POSIX file scriptPath as alias
	set scriptLiB to (load script scriptName)
	tell scriptLiB
		set {baseName, texName, pdfName, namePath, dirName, dirNameunquoted, 
logName, logPath, rtfName} to setnamebbedit(fileName)
	end tell
	select document texName
	set sourceLine to startLine of selection as number
	set texPath to namePath & ".tex"
	set texFile to texPath as POSIX file
	
	set shellScript to "cd " & dirName & ";"
	set shellScript to shellScript & "~/Library/TeXShop/bin/pdflatexc  " & 
texName
	do shell script shellScript
	
	
	set logFile to logPath as POSIX file
	
	set findString to "Emergency stop"
	
	set findString to "'Emergency stop'"
	set foundText to "no error"
	try
		set shellScript to "cd " & dirName & ";"
		set shellScript to "/usr/bin/egrep -w -n  " & findString & " " & 
logPath
		do shell script shellScript
		
		set foundText to result as string
		set n to (number of characters of contents of foundText)
		set i to 1 as number
		
		repeat while i < (n + 1)
			if character i of foundText is equal to ":" then
				set k to i
				exit repeat
			else
				set i to (i + 1)
			end if
		end repeat
		set lineNumber to (characters 1 thru (k - 1) of foundText as string)
		set theLine to lineNumber as number
	end try
	
	if foundText is equal to "no error" then
		set thePDF to POSIX file pdfName as alias
		set scriptPath to (do shell script "dirname " & 
"~/Library/TeXShop/Scripts/ex")
		set scriptPath to scriptPath & "/preview_bbedit.scpt"
		set scriptName to POSIX file scriptPath as alias
		set scriptLiB to (load script scriptName)
		tell scriptLiB
			preview_bbedit(texName, thePDF, previewer, process_name)
		end tell
		tell application "TeXShop"
			activate
			open texFile
			tell front document of application "TeXShop"
				refreshtext
			end tell
			typeset front document
		end tell
		tell front document of application "TeXShop"
			refreshtext
			goto line sourceLine
		end tell
	else
		beep
		do shell script "bbedit " & "+" & theLine & " " & logPath
	end if
end tell




--------------------- Info ---------------------
Mac-TeX Website: http://www.esm.psu.edu/mac-tex/
           & FAQ: http://latex.yauh.de/faq/
TeX FAQ: http://www.tex.ac.uk/faq
List Post: <mailto:MacOSX-TeX at email.esm.psu.edu>





More information about the MacOSX-TeX mailing list