ホームTeX 関連 RPMS

src-special で TeX ソース⇔プレビューア相互参照


ここ1〜2年の新しい TeX を使うと、 src-special という拡張機能のおかげで、 テキストエディタと DVI プレビューアとの間で、 相互に対応部分にジャンプできるようになりました。

エディタからプレビューアを呼び出すときに対応する部分を表示させたり、 逆にプレビューアから該当する TeX ソース部分に、 エディタのカーソルをジャンプさせることができるようになります。

WYSIWYG でない TeX の欠点を補う、非常に重要な機能です。 この環境に慣れてしまうと、もう手放せません。 この新機能の使い方を紹介します。
emacs と xdvi の連係 emacs から xdvi にジャンプしたところ(該当する段落が四角で囲われている)

src-special とは

 src-special とは、TeX の special(拡張)命令の一種で、 TeX ソースのファイル名と行番号を DVI ファイルに書き込みます。 プレビューア(dviout や xdvi)は、これを目印にして 「どのファイルの何行めを表示しているか」 を認識できるようになります。

 エディタからは、カーソル位置のページを表示するよう、 プレビューアに指示できるようになります。 逆にプレビューアからは、マウスで指定された部分の ソースにジャンプするよう、エディタに指示できるようになります。 プレビューアで見つけた修正箇所にすばやくアクセスできるわけです。


src-special を使うには

 special 命令は tpic や color 等でも利用されてますが、 一般に、TeX マクロ(あるいは TeX コンパイラ本体)と、 DVI を扱うドライバの双方の改造(対応)が必要です。

 src-special も例外ではなく、TeX コンパイラのヘルプメッセージに "-src-specials" というオプションが表示されるものが必要になります(*1)。 プレビューアについては、 dviout for Windows は Ver.3.11 から、 xdvi は 22.39 から対応しています。 (おおまかに言えば、Linux では 2003年ぐらいから採用されている teTeX-2.0 から対応しています(*2)。 角藤さんの W32TeX は 2000年後半の Web2C-7.3.3 ぐらいのものから対応しています。)

 エディタは、編集ファイル名+行番号を引き渡せるものが必要です。 emacs, 秀丸等は大丈夫ですが、できないエディタもあるようです。 また、エディタ毎に設定が異なるので、マイナーなエディタでは厄介です。


 (*1) src-special 命令の入った DVI ファイルを非対応のドライバで読み込むと、 「未知の special 命令がある」という警告(エラー)が出ることもありえます。 (あまりないでしょうが)DVI ファイルを配布する場合は注意が必要です。

 (*2) teTeX-1.0 は非対応です。 src-special を実現するパッチも存在したようですが、 国内主要 Linux には採用されてなかったと思います。


MS-Windows の場合

 角藤さんの W32TeX と、大島さんの dviout があると良いでしょう。

 設定と使い方は Windows95/98/Me/NT/2000/XP における dviout のインストール を御覧ください。:)


UNIX の場合

 teTeX-2.0 以降を用意しましょう。


設定

 emacs での設定は以下の通りです。 まず、"xdvi-search.el" が読み込めるようにします。

"~/.emacs.el" に追記
;;; TeX src-special のための設定
(server-start) ; 必須
(require 'xdvi-search) ; 必須
(custom-set-variables
 '(server-switch-hook (quote (raise-frame)))) ; 窓を上に
(custom-set-faces)

 さらにYaTeX を使う場合は

"~/.emacs.el" を変更
      tex-command "platex -src-specials"

 に書き換えて、

"~/.emacs.el" に追記
(add-hook 'yatex-mode-hook
           '(lambda ()
              (define-key YaTeX-mode-map "\C-c\C-j" 'xdvi-jump-to-line)))

 を追記しておくと便利でしょう。

 呼び出すエディタは xdvi のコマンドラインオプションや 環境変数 XEDITOR などでも与えられますが、 "/usr/X11R6/lib/X11/app-defaults/XDvi" あたりのファイルに

*editor:        emacsclient --no-wait +%l %f

 と書くとよいでしょう。 emacs 以外のエディタで使うには、 Inverse Search with Xdvi(k) を御覧下さい。


使い方

 emacs から xdvi へのジャンプは、 TeX ソースを編集中に C-c C-j を実行、 あるいは xdvi-jump-to-line マクロを実行 (M-x xdvi-jump-to-line と入力)します。 (必要ならば)xdvi が立ち上がり、該当部分に四角の印がつきます。

 逆に xdvi から emacs へのジャンプは、Ctrl + マウスクリックです。

 いずれの場合も、段落単位ぐらいの精度でしか対応がとれませんが、 十分に役立つものと思います。


補足

 うまく動かない時のために、相互ジャンプに必要な事項を書き並べてみます。


ホームTeX 関連 RPMS 置場
リンクはご自由にどうぞ。
土村 展之(tutimura(a)nn.iij4u.or.jp) '(a)'は'@'に置き換えて
更新日 4/ 9 16:15, 2005