TeX プロジェクトが参考文献目録を含んでいる場合には、一連のタイプセットコマンドを実行して目録をアップデートしなければなりません。まず LaTeX を実行して .aux ファイルを作成する。BibTeX を実行して .aux ファイルから .bbl および .blg ファイルを作成する。再度 LaTeX を実行して参考文献目録を文書に付け加える。LaTeX を最終的に実行して目録に対する文書内の参照をアップデートする。

複数のプロジェクトに、一連の同様なタイプセットコマンドが含まれていることもあるでしょう。AppleScript を使えば、こうした作業を自動化することができます。

どんなふうにすればいいのか、TeXShop に付属する「OtherScripts->Bibliography」というコマンドを例に調べてみます。このコマンドの本体は次のようになっています。

`

  --Applescript

  set fileName to #FILEPATH#
  if fileName is equal to ""
  activate
  display dialog "Please save the file first" buttons {"OK"} default button "OK"
  return
  end if

  set frontName to #DOCUMENTNAME#
  tell application "TeXShop"
  save document frontName
  end tell

  tell document frontName of application "TeXShop"

    latexinteractive

    repeat
      delay 2
      if taskdone
      exit repeat
      end if

    end repeat

    bibtex

    repeat
      delay 2
      if taskdone
      exit repeat
      end if
    end repeat

    latex

    repeat
      delay 2
      if taskdone
      exit repeat
      end if
    end repeat

    latex

  end tell

`

コマンドの第１行目は、これが AppleScript マクロであることを示しています。次の行では #FILEPATH#（ TeX ソースのフルパス名を与えるパラメータ）をチェックしています。このパラメータは、新規書類が作成されていながらまだ保存されていないと、空っぽの文字列になります。その場合、ユーザは文書を保存するように言われ、スクリプトは終了します。

次につづく行では、文書を保存するよう TeXShop に命じています。対象となる文書を参照するのに #DOCUMENTNAME# を使っていることに注意します。

残りのコマンドで latexinteractive ・ bibtex ・ latex それに latex を実行しています。タイプセットコマンドを呼び出した後、タイプセット作業が完了する前に、コントロールはすぐに AppleScript に戻ることを思い出してください。repeat のループ部分では、次のタイプセット処理が実行される前に、先立つ作業が完了したかどうかをチェックするようスクリプトに命じています。「delay 2」という行は、作業が完了したかどうかを絶えず問い合わせつづけることでコンピュータ全体の速度を低下させないよう AppleScript に間合いを取らせています。

マクロ・ヘルプ
TeXShop のタイプセットコマンドでスクリプトを書く