dviout for Windows and HyperTEX

SHIMA

1997 年 3 月 12 日

1 はじめに

MS-DOS における TEX のデバイスドライバ dviout/dviprt は、多くの人の協力により、高速かつ高機能なものに成長し、 MS-DOS における TEX の標準的なデバイスドライバとして、広く日本で用いられるようになりました。

MS-DOS が既に過去のものとなりつつある現在、 dviout をより新しい OS 上に移植しようという計画が 1996 年 6 月にスタートしました。

32bit 化をまず行い、 djgpp 版の dviprt や UNIX(SUN OS 4.1.3, FreeBSD etc.) 上での dviprt が作成されました。その後、乙部氏の協力を得て、 Windows95/NT 版の dviout （dviprt の機能を含む）の作成に取り掛かり、幾つかのテスト版を経て、最初の公開版 Ver.3.0 となりました。

Windows の GUI(Graphical User Interface) を取り入れ、さらに以下の新しい機能に対応しています。

• HyperTEX

• 文字列サーチ機能

• ルーペ機能

• ヘルプシステム

特に HyperTEX は、インターネット時代の将来の TEX として注目に値し、 Windows 版 dviout を作成する大きな動機の一つとなったものです。

2 HyperTEX

HyperTEX は、 TEX に HTML(Hyper Text Markup Language) の Hyper Jump の機能（他の資源へのリンク情報とリンクのターゲットとしての情報）を付加したもので、 HyperTEX specials によって実現されます。

dviout は HyperTEX specials を解し、内部へのジャンプや、ローカルな他の dvi ファイルへのジャンプを実行するとともに、それ以外の資源へのリンクを WWW browser を呼ぶことにより、実現しています。

例１： Windows 版 dviout の元になった MS-DOS 版の Version 番号は？ —上の行の色の変わった部分を、マウスの左ボタンでクリックしてみてください—

2.33  2.43.1  2.43.2  2.43.3  2.43.4

例２: この文章が書かれた日は？

他のページへのジャンプから戻るのには、 Jump → Latter History または、ツールバーの左向き矢印ボタン（ツールバーに、これが表示されていないときは、 View → Change Tool Buttons をクリックする）を押します。

URL(Universal Resource Locator) が指定された文字列を、どのような色付けで表示するか（デフォルトは青の下線付きの青文字で表示）、は dviout のプロパティーシート^{1} の HyperTEX のページで指定できます。

また、 foo.dvi という HyperTEX speiclas を含む dvi ファイルのアンカー（HTML 文書や、 HyperTEX の文書からリンクを張るときの目印）のラベル名に、 Chapter1 というものがあるとすると

   dviout foo #Chapter1

とすることにより、 foo.dvi の表示をそのアンカーが打たれた場所から始めることができます。

3 HyperTEX specials

付属の myhyper.sty を用いた場合
   If you click \href{#foo}{here}, you will jump to \name{foo}{this} place.

と書くと、

If you click here, you will jump this place.

となります。 HTML では

   If you click <a href="#foo">here</a>, you will jump to <a name="foo">this</a>
   place.

に対応します。 myhyper.sty では、これらのマクロは以下のように定義されてます。

   \def\href{\leavevmode\begingroup \@sanitize \@href}
   \def\@href#1{\special{html:<a href="#1">}\endgroup \@@href}
   \def\@@href#1{#1\special{html:</a>}}
   \def\name{\leavevmode\begingroup \@sanitize \@name}
   \def\@name#1{\special{html:<a name="#1">}\endgroup \@@name}
   \def\@@name#1{#1\special{html:</a>}}

HTML で使われる # が、 TEX では特殊な意味を持ってしまうので、上のような定義をしています。

4 WWW Browser との連携

WWW Browser としてインターネットエクスプローラがインストールされていて、それを呼び出すとインターネットにアクセス出来る状況になっているとしましょう。

1 Option → Setup parameters…

また、拡張子 dvi を持つファイルは、 dviout.exe に関連づけられているとします（エクスプローラの表示 → オプション → ファイルタイプで指定できます。このとき、 dvi ファイルに、適当なアイコンを定義できます）。

上記の設定で、 WWW Browser から dvi ファイルをアクセスすると、表示は自動的に dviout で行われます。

WWW Browser がサポートしている各種資源へのジャンプを、 HyperTEX special として書くことができ、 dviout は、必要なら WWW Browser を呼び出して処理することが出来ます。たとえば、

     \href{http://akagi.ms.u-tokyo.ac.jp/ftp-j.html#TeX}{ここ}から dviout の最新情報

が得られます。

は、

ここから dviout の最新情報が得られます。

となります。勿論

     \href{ftp://akagi.ms.u-tokyo.ac.jp/}{ここ}から anonymous ftp できます。

なども可能で、これは

ここから anonymous ftp できます。

となります。インターネットにアクセス可能ならば、マウスの左ボタンのクリックにより、実際にこれらの資源にアクセスできます。

外部の資源へのアクセスの場合は、デフォルトでは、それを実行するかどうかを尋ねるダイアログボックスが表示されます。プロパティーシートの HyperTEX での設定で、これを省略することができます。逆に、 CTRL を押しながらマウスの左ボタンをクリックした場合は、内部へのジャンプでもこのダイアログボックスが表示されます。

飛び先が dvi ファイルであれば、再び dviout に戻ってきます。ですから WWW サイトに HyperTEX で作成した dvi ファイルを置いておけば、それらの間で相互参照が可能になります。

なお、このファイルから、同じドライブにある dvi ファイルへの相対ジャンプは、 WWW Browser を経由せずに、直接 dviout が処理します。たとえば、 hyper2.dvi にジャンプできます。