[OS X TeX] Applescript sync for BBEdit-->TeXniscope

Claus Gerhardt gerhardt at math.uni-heidelberg.de
Sat Nov 27 11:12:41 CET 2004


The sync comes frommy script

>> set sourceLine to startLine of selection as number
>> 	set current clipboard to "\\marginpar{sync}" as string
>> 	paste

Then a pdflatex run is initiated, the pdf file is opened in TeXniscope 
at the corresonding line or very close to the the line, and "sync" (a 
later version uses "\\marginpar{\\textcolor{red}{sync}}" which I 
prefer) is written to the marigin in the pdf file, and the 
corresponding command in the source file is removed.

Claus

On 27.11.2004, at 09:04, Jérôme Laurens wrote:

>
> Le 26 nov. 04, à 18:39, Claus Gerhardt a écrit :
>
>> Below is an Applescript which synchronizes BBEdit-->TeXniscope, if 
>> the package pdfsync is used.
>>
>> As a special feature the line where the cursor was in BBEdit will be 
>> indicated in the pdf file by having the word "sync" written in the 
>> margin to help navigating. Please note that the line in the source 
>> file may not be part of a display equation, i.e., it should be a 
>> normal text line.
>> I would like to hear some comments about the feature. The Applescript 
>> includes a standard pdflatex typesetting.
>>
>> Notice also that the script needs the new subroutine preview_bbedit, 
>> that can be downloaded from
>> http://www.math.uni-heidelberg.de/studinfo/gerhardt/tex/
>
> Sorry, I am afraid I don't understand
> The "sync" written feature comes from your script, BBEdit or 
> TeXnicenter?
> Does it appear in the BBEdit source window or in the pdf TeXnicenter  
> window?
>
>>
>> Claus
>>
>> -- Applescript
>> -- The file has to be a TeXShop file, but can be opened, saved and 
>> edited in BBEdit.
>> -- sync
>> -- 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 "TeXniscope"
>> --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 current clipboard to "\\marginpar{sync}" as string
>> 	paste
>> 	save document texName
>> 	set texPath to namePath & ".tex"
>> 	set texFile to texPath as POSIX file
>> 	set thePDF to pdfName as POSIX file
>> 	try
>> 		set shellScript to "cd " & dirName & ";"
>> 		set shellScript to shellScript & "~/Library/TeXShop/bin/pdflatexc  
>> " & texName
>> 		do shell script shellScript
>> 	end try
>> 	
>> 	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 "TeXniscope"
>> 			refresh of the front document
>> 			the front document goto line sourceLine of source texPath
>> 		end tell
>> 	else
>> 		beep
>> 		do shell script "bbedit " & "+" & theLine & " " & logPath
>> 	end if
>> end tell
>> tell application "BBEdit"
>> 	find "\\marginpar{sync}" searching in text 1 of text window 1 
>> options {search mode:literal, starting at top:true, wrap 
>> around:false, backwards:false, case sensitive:false, match 
>> words:false, extend selection:false} with selecting match
>> 	set selection of window 1 to ""
>> save document texName
>> 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>
>>
>>
>
> --------------------- 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>
>
>

--------------------- 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 macostex-archives mailing list