[OS X TeX] Re: TeXShop Engine to use Acrobat as previewer

Herbert Schulz herbs at wideopenwest.com
Sun May 23 17:21:34 CEST 2010


On May 22, 2010, at 8:39 PM, Ramón Figueroa-Centeno wrote:

> 
> Aloha,
> 
> Alas the engine I posted only works fully for Adobe Acrobat Pro and not
> Adobe Reader, since although they have the same applescript dictionary
> Acrobat Reader does not have many of the commands implemented.
> 
> Not all is lost as one can implement most of the functionality using System
> Events, but the preview will always open on page 1. Moreover, the Acrobat
> engine will set the preview position to the TeXShop default on its first
> run, but once there is a preview open it will position subsequent previews
> in the place the user chooses (until she closes it). The Reader engine
> always opens the preview in the same place, as defined by TeXShop.
> 
> Finally, you must open System Preferences and check Enable Access for
> Assistive Devices in the Universal Access preference pane, for this engine
> to work.
> 
> Enjoy! (but not as much)
> 
> Ramón
> 
> ---------------------------code starts after this
> line--------------------------
> #!/bin/bash
> 
> PATH="$PATH:/usr/texbin:/usr/local/bin"
> 
> name=$(basename "$1" .tex)
> basefname="`pwd`/${name}"
> 
> # Change this line to whatever typesetting command you like that produces
> PDFs.
> # pdflatex --file-line-error --shell-escape --synctex=1 "$1"
> # comment the line above and uncomment the one below if you wish to use an 
> # installed TeXShop engine. Here we use pdflatexmk as an example.
> ~/Library/TeXShop/Engines/pdflatexmk.engine "$1"
> 
> # Get TeXShop's PDF window position
> window=`defaults read TeXShop "NSWindow Frame PdfKitWindow"`
> # replace every space run by a single space
> window=`echo $window | sed 's/ +/ /g'`
> 
> x=`echo "$window" | cut -d ' ' -f 1`
> y=`echo "$window" | cut -d ' ' -f 2`
> width=`echo "$window" | cut -d ' ' -f 3`
> height=`echo "$window" | cut -d ' ' -f 4`
> 
> # Close any preview that already exists (if any) and open the new one.
> /usr/bin/osascript  <<END
> activate application "Adobe Reader"
> tell application "System Events"
> 	tell process "Adobe Reader"
> 		try
> 			click button 1 of window "$name.pdf" 
> 		end try
> 	end tell
> end tell
> 
> set x to $x
> set y to $y - 115
> set h to $height + 115
> set w to $width
> 
> tell application "Adobe Reader"
> 	open POSIX file "$basefname.pdf"
> end tell
> 
> tell application "System Events"
> 	tell process "Adobe Reader"
> 		set position of window "$name.pdf" to {x, y}
> 		set size of window "$name.pdf" to {w, h}
> 	end tell
> end tell
> 
> END
> 
> # We close the pdf window in TeXShop
> close_window="tell application \"TeXShop\" to close (every window whose name
> is \"$name.pdf\")"
> 
> /usr/bin/nohup /usr/bin/osascript  -e "$close_window" &
> 

Howdy,

Been off the net for a short while so couldn't add that this is a much nicer way of dealing with things than using a Macro. Using the pdflatexmk engine would definitely be the way to go (assuming you would be using pdflatex for compilation) but folks should make sure that those engines, found in ~/Library/TeXShop/Engines/Inactive/Latexmk/ are activated already.

Good Luck,

Herb Schulz
(herbs at wideopenwest dot com)






More information about the macostex-archives mailing list