ここ1〜2年の新しい TeX を使うと、 src-special という拡張機能のおかげで、 テキストエディタと DVI プレビューアとの間で、 相互に対応部分にジャンプできるようになりました。
エディタからプレビューアを呼び出すときに対応する部分を表示させたり、 逆にプレビューアから該当する TeX ソース部分に、 エディタのカーソルをジャンプさせることができるようになります。
WYSIWYG でない TeX の欠点を補う、非常に重要な機能です。 この環境に慣れてしまうと、もう手放せません。 この新機能の使い方を紹介します。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 以降を用意しましょう。
- Vine3.0 なら標準で使えます。emacs ⇔ xdvi のジャンプの設定も、 ほぼ標準のままで OK です。
"~/.emacs.el"
は
tex-command "platex -src-specials"
に変更しておくのが便利です。- Vine2.5/2.6 なら、 teTeX-2.0 パッケージングメモ に拙作 RPM を用意しています。
- Fedora Core 1 以降も teTeX-2.0 ですが、どのように設定されているか確認していません。
- 自力で teTeX-2.0 をインストールするなら、 拙作 ptetex -- teTeX 用日本語パッチ集 をどうぞ。
設定
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 + マウスクリックです。
いずれの場合も、段落単位ぐらいの精度でしか対応がとれませんが、 十分に役立つものと思います。
補足
うまく動かない時のために、相互ジャンプに必要な事項を書き並べてみます。
- platex コマンドに -src オプション(あるいは -src-specials)を付けます。
- emacs からは
'xdvi'
に -sourceposition というオプションを付けて 呼び出しています。"xdvi -sourceposition '4 hogehoge.tex' /home/userid/hogehoge.dvi >& /home/userid/.xdvi-log &"
という形で実行されるので、"~/.xdvi-log"
にログが出力されるはずですが、 いつも空ファイルのになってるようです。- xdvik 上での関連コマンドは以下の通りです。
- Ctrl-右クリックでエディタへジャンプ
- Ctrl-x がマウス位置の src-specila の情報表示
- Ctrl-v でページ全部の src-special の情報表示 (ジャンプ先が埋め込まれている部分の先頭に四角が描かれる)
- エディタから xdvi にジャンプしたときに、 段落ならうまく四角で囲われるのに、 箇条書環境で1行大きく囲われてしまうのは、仕様のようです。 DVI の中で、中点(・)の直後に src-special コマンドが埋め込まれているので、 中点は直前の箇条書項目に属するものと扱われてしまうのですが、 オリジナルの xdvik でも同じ動作をします。
ホーム > TeX 関連 RPMS 置場
リンクはご自由にどうぞ。 |
土村 展之(tutimura(a)nn.iij4u.or.jp) '(a)'は'@'に置き換えて 更新日 4/ 9 16:15, 2005 |