[OS X TeX] Re: TeXShop Engine to use Acrobat as previewer
Herbert Schulz
herbs at wideopenwest.com
Sun May 23 11:21:34 EDT 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 MacOSX-TeX
mailing list