Um zu demonstrieren wie man ein Unix Shell-Skript aus einem AppleScript aufruft werden wir das AppleScript „pdflatexc“ von Claus Gerhardt analysieren. Dieses Skript erfüllt lediglich die Aufgabe den Ort der teTeX-Binaries an die $PATH-Variable zu übergeben und dann pdflatex zum Setzen aufzurufen.
Das Shell-Skript selbst ist von TeXShop unabhängig und kann im Terminal mit dem Befehl „pdflatexc myfile.tex“ aufgerufen werden, wenn sich pdflatexc sich in einem Ordner befindet, der sich im Durchsuchungspfad für auführbare Dateien befindet.
Natürlich können Sie auch kompliziertere Skripte erstellen, die verschiedene Operationen in Folge ausführen können. Erst dann werden die hier dargestellten Techniken wirklich nützlich.
Das AppleScript, durch das dieses Shell-Skript aufgerufen wird ist wesentlich interessanter:
Wenn man die einführenden Kommentare außer Acht lässt, bilden die ersten sieben Zeilen einen zauberhaften Weg die Quelldatei zu sichern, den Namen des Dokumentes heraus zu bekommen und ihn in die Variable „frontName“ zu sichern. Es wird ein kompiliertes Skript mit dem Namen „setpath.scpt“ in ~/Library/TeXShop/Scripts für den schwierigen Teil benutzt. Wenn man genau hin sieht, kann man erkennen, dass der Code den Pfad „~/Library/TeXShop/Scripts/setname.scpt“ findet und dieses Skript mit den Parametern #NAMEPATH# und #TEXPATH# aufruft.
In vielen AppleScripts könnte dies einfacher auch mit Hilfe der folgenden Befehle erreicht werden:
Gerhardts Skript hat jedoch zwei Vorteile. Als erstes kann sein Skript auch dann aufgerufen werden, wenn das vorderste Dokument eine log-Datei ist (z.B. /Users/koch/Examples/myfile.log), das später nicht die Befehle aufnehmen soll. Zum Zweiten gibt Gerhardts Skript beim Sichern eine Fehlermeldung aus. Der Befehl „Sichern“ würde im Gegensatz dazu TeXShop in Sichern-Dialog aufhängen. (Lesen Sie das Hilfe-Dokument „Skripte mit TeXShop-Satzkommandos erstellen“ für weitere Hinweise.)
Die nächsten sechs Zeilen des Skripts definieren die Variablen „dirName“ und „baseName“. Ist die Quelldatei „/Users/koch/This directory/Stuff/myfile.tex“, so wird „dirName“ " '/Users/koch/This directory/Stuff' “ inklusive der einfachen und doppelten Anführungszeichen. „baseName“ wird zu "myfile.tex.". Diese Schritte sind notwendig, damit Leerzeichen in den Pfaden enthalten sein können. Wie immer erlaubt TeX keine Leerzeichen im letztendlichen Dateinamen.
Die nächsten drei Zeilen rufen das Shell-Skipt auf. Das Ergebnis kommt das dem Auführen von "cd dirName; ~/Library/TeXShop/bin/pdflatexc baseName" in einem Terminal gleich.
Shell-Befehle in AppleScript werden in folgender Form aufgerufen:
ändert das Verzeichnis zu dem in dirName spezifizierten. dirName ist schon in Anführungszeichen, so dass diese hier entbehrlich sind.
Will man das Arbeitsverzeichnis behalten und wetiere Befehle ausführen, so können diese nicht mehr durch "do shell script" auferufen werden, da hierdurch eine neue Shell aufgerufen würde. Im Terminal würden aufeinander folgende Befehle mit einem Semikolon getrennt. Im AppleScript muss das Semikolon deshalb mit dem kaufmännischen „und“ eingebettet werden:
Die Zeilen
Die letzten drei Zeilen aktualisieren das Vorschau-Fenster.
Sicherlich sind einige Zeilen schwer verständlich. Sie können sie aber ohne Probleme in eiigene Skripte kopieren.