シンクロナイゼーションは Textures の重要な機能です──Textures は Classic Mac 用の商用 TeX ソフトで Blue Sky TeX Systems 社の製品です。この機能があれば、執筆者はプレビューウインドウをクリックすることで、ソースウインドウ内の該当部分にすぐに移動でき、またソースウインドウをクリックしてプレビューウインドウへ移動できます。Mac OS X 用ネイティブ・バージョンの Textures が約束されてはいますが、今はまだリリースされていません。Textures におけるシンクロナイゼーションの実装は、ソースコード内の対応する箇所を正確に突き止めるその能力によって広く賞賛されています。
この実装より後、多くの TeX システムでも似たような機能が提供されていますが、これは TeX が dvi ファイルに補足情報を書き込むようにする追加のスタイルファイルを使っています。これらの似た方式のどれひとつとして(次に述べる TeXShop の方式も含めて)Textures のものほど精確ではありません。
TeXShop において、シンクロナイゼーションを行なうには2種類の方法があります。デフォルトの方法は、Mac OS X 10.4 の新機能である PDF ファイル内の文字列検索機能を利用します。この方法を利用するために特別なスタイルファイルを読み込む必要はありません。ソースウインドウ内の単語や語句を、コマンドキーを押しながらクリックしてみてください──プレビューウインドウが適切な位置までスクロールしてゆき、組版された当該文字列を赤で囲って表示します。同様に、プレビューウインドウ内で単語や語句をコマンド+クリックしてみてください。該当するソースファイルが(必要であれば)開かれ、対応する文字列の位置までスクロールし、黄色でハイライト表示します。
この方法はファイルをタイプセットするプログラムに依存しませんので、pdftex/pdflatex、TeX/LaTeX + Ghostscript、XeTeX や他のタイプセットプログラムでも利用できます。
この機能を利用する上で、基本的な仕組みを知っておくと役に立ちます。ソースファイルのある箇所をクリックするとしましょう。TeXShop はクリックの位置を中心にして20字分の文字列を取得し、pdf ファイル内の対応する文字列を検索します。もしこの文字列が正確に1回だけ見つかるようであれば、pdf 内の文字列を赤で丸く囲むことでうまくいったことを示します。しかしよくあることですが、ソースの文字列には組版用のコマンドが含まれており、出力結果の文字列とは一致しません──これは数学の組版ではまずもってその通りです。なので検索がうまくゆかないようであれば、TeXShop は5文字分のバックアップを取り、新しく20字分の文字列を取得し、再試行します。この動作を必要に応じて20回くり返しますが、一度としてうまくゆかないようであれば、さらにまた20回、今度は逆に元々の文字列よりも前に遡って、この動作をくり返します。こうした検索がまるっきり功を奏さないようだと、TeXShop はお手上げです。
ということは、明らかに、数式よりも文章をクリックする方がよいわけです。コテコテにマークアップしてある段落は、うまくシンクロナイズできないかもしれません。とはいえ、いろいろ試してみたところでは、検索はたいていうまくゆきますし、クリックするのにふさわしい位置を選ぼうとしてあまり考え込んだりしなくても大丈夫です。
プレビューウインドウからソースウインドウへのシンクロナイゼーションも同じようにして機能しますが、もうちょっと複雑です。プロジェクトには、\include や \input といった方法で挿入された、いくつものソールファイルが含まれているかもしれません。TeXShop では、\include や \input などの命令文はすべてルートファイルに書き込まれていて、\include{this file}、\input{this file} ないしは \import{this file} のうちの1つを用いているものと想定することで、この複雑な状態を処理しています。最初の実装においては、先頭から60個のそうしたファイルをリスト化し、それらすべてに対して検索をかけ、ファイルのうち1つのみにおいて文字列が正確に1回だけ現われるのであれば、うまくいったことを表示します。当該の文字列がまだ開かれていないファイルの中で見つかれば、TeXShop がそのファイルを開きます。そして適切な位置までスクロールし、その語句を黄色でハイライト表示します。(将来的な実装において、60という数は引き上げられるかもしれません──もっとたくさんのファイルへの検索が必要であれば、そう書き送ってください。)
ConTeXt では、ファイルを挿入するのに異なる方法を用いるので、\include や \input といった記述に対して検索をかけても関連する ConTeXt のファイルを見つけることはできません。そこでシンクロナイゼーション用に検索するファイルを手動で指示する方法があります──この方法はどのタイプセット方式でも機能しますが、ConTeXt では必須です。ルートファイルの冒頭において、検索するファイルを次のような書式で記載します──
以下に例を挙げます──
以前のバージョンの TeXShop では、別方式のシンクロナイゼーションを用いていました──これは2003年に Jérôme Laurens さんと Piero D'Ancona さんによって考案されたものです。二人は pdflatex 用にスタイルファイルを書きました──彼らのパッケージ(pdfsync.sty)は、出力結果の PDF とソースファイルとを相互に関連づけるのに必要な情報を、タイプセット中に pdftex が特別なファイルに書き出すようにするものです。Laurens さんと D'Ancona さんの取り組みは、特定のタイプセット操作でX座標とY座標を出力する pdftex の内部コマンドに依存しており、pdftex ないしは pdflatex、あるいは ConTeXt においてのみ動作します。
TeXShop では今でもまだこの方法を利用できます。「環境設定...」の「詳細」タブで、シンクロナイゼーション方式(Sync 方式)を選択できます──「pdfsync.sty」が元々の方法で、新しい方法は「PDFを検索」です。「PDFを検索」を選択しつつも、それが失敗したときには「pdfsync.sty」に頼る、というのも可能です。
「pdfsync.sty」方式を利用するには、pdfsync.sty の最新バージョンと関連ファイルをインストールする必要があります。これらのファイルをインストールしたか確認するには、ヘルプの「TeXShop の設定はどうすればよいか?」の中にある「きちんとインストールしましたか?」をお読みください。
LaTeX で pdfsync を使うには、次の1行を TeX ソースコードのプリアンブル──\begin{document} 行よりも前の部分──に付け加えます:
このパッケージは「TeX+Ghostscript」でタイプセットした場合は無視されますが、pdflatex でタイプセットを行なうと、.pdfsync という拡張子を持つ追加ファイルを生成します。たとえば、ソースファイルの名前が main.tex だとすると、追加ファイルの名前は main.pdfsync となります。この追加されたファイルには、pdf における位置とソースファイルにおける位置とを関連づけるのに必要な情報が書き込まれています。pdfsync を用いたにしても、ほとんどのファイルではエラーなしでタイプセットされるはずですが、ごく少数のケースでは、このパッケージが余計なエラーをもたらすかもしれません。そうした危ういコードは、ペアになっているコマンド──\pdfsyncstop と \pdfsyncstart との間に挟み込んでおけます。さらに精度を高めるために、コマンド \pdfsync を使って特別にシンクロ・スポットを増やすこともできます。pdfsync スタイルファイルは時おりドキュメント内の改行位置を変更してしまうことがあるので、pdfsync を使ってタイプセットしていても、決定稿では使わずにタイプセットすることをひとまずはお勧めします。
ひとたび pdfsync を用いてファイルをタイプセットすれば、ちょうど上述の「PDFを検索」と同じようにシンクロナイゼーションが機能します。注意:もし pdfsync.sty を読み込んでいても、TeXShop のシンクロナイゼーションの設定が「PDFを検索」になっていれば、拡張子が「.pdfsync」のファイルはたんに無視されます。
警告:もしルートファイルが \include を使って他のソースファイルを追加してはいるものの、これらのソースファイルの方からルートファイルに対して「%!TEX root」という1行ないしはルートファイル設定により相互参照的にリンクされていない場合、コマンド+クリックすることでプレビューウインドウからソースウインドウへは移動できますが、ソースからプレビューへは戻れません。これは、それぞれのソースファイルの冒頭に「%!TEX root」コメントを書き加えることで容易に是正できます。
上述したように、pdfsync は \include{myfile} で読み込まれるファイルには機能します。\input{myfile} という構文が使われていれば input コマンドに対しても機能します ; ほかの構文「\input myfile」では機能しません。
pdfsync.sty というファイルは、LaTeX で利用されます ; 同様のファイル pdfsync.tex と pdfsync4context.tex はそれぞれ TeX と ConTeXt でのシンクロナイゼーション用となっています。
シンクロナイゼーションは、mysource.pdfsync にデータを書き込み、プレビューウインドウ内の特定のシンクロ・スポットに照応させることで機能しています。大まかに言えば、それぞれのデータ・エントリには以下のようなものが含まれます──
こうしたシンクロナイゼーション・ポイントを TeXShop で表示させる方法があります。プレビューウインドウのツールバーには「Sync」というチェックボックスがあります。デフォルトでは見えていません ; 「ウインドウ」メニューにある「ツールバーをカスタマイズ...」を使って選び取ってください。チェックボックスをチェックすると、シンクロナイゼーション・ポイントが見えるようになります。
プレビューウインドウが表示された当初は、この項目にはチェックが入っていません。隠れた環境設定項目でこれを変更できます: