# 他のプログラムとの連携

他のプログラムからの dviout の呼び出し
既にdvioutが起動している状態で、dviファイルをパラメータとして更にdvioutを呼び出したとき、もう一つdvioutを起動するかどうか制御できます(cf. no more dviout)。
TeXのエディターとの連携
source specialsを使うことにより、dvioutのプレビュー画面との相互のジャンプができます（実行コマンド、あるいはDDEのサーバ／クライアントとしてのトランザクションによる）。
DDE における以下のサービスのサポート
サービス名
dvioutで始まる文字列（dviout とか dvioutj など）または WinDVI
トピック名
dviout または dvioutn または WinDVI または 表示中のdviファイルのフルパス名
これでdvioutをDDEサーバとして接続ができます（複数個の dviout が起動されているときは、最初の dviout がデフォルトですが、トピック名を dvioutn とすればn番目の dviout が呼び出されます）。
接続後、以下のXTYP_EXECUTEトランザクション、および、XTYP_REQUESTトランザクションを指示することができます。
--- XTYP_EXECUTEトランザクション ---
[WinNormal] dvioutのウィンドウをアクティブにします。
[WinIconic] dvioutのウインドウをアイコン化します。
[FileOpen(filename)] filenameを開きます。たとえば [FileOpen(c:\document\foo.dvi)]または [FileOpen("c:\document\foo.dvi")]のような文字列を送信してください。filenameがフルパスでない場合、動作は保証できません。
filenameがディレクトリ名のときは、そのディレクトリ中のdviファイルを選択するダイアログが開かれます。
[FileReopen]dvioutに現在開いているファイルを再度開いて表示し直すように指示します。
[FileExit]dvioutに現在のDDE接続が終了したときに、自動的に終了するように指示します。
[PageMove(page)] 指定したページに移動します。[PageMove(10)][FileReopen]のように使います。
[PageOpen(page)] 次に[FileOpen(filename)]で開くファイルの最初に表示するページを指定します。
コマンドラインと同様、ヒストリ(cf.File Menu)を使う場合は、pageは、数字でなくhとします。このときは、filenameはフルパスでなくても、ヒストリからサーチされます。また、最後のページはlと指定します。
HyperTeXの場合は#nameのように#で始めて、表示箇所を指定できます。source specials の場合は、# line_number source_file または # line_number/string source_file とします。
[ValueSet(parameter=value)] パラメータを設定します。たとえば、[ValueSet(dpi=600 y=B5)]のように、変更したいパラメータとその値の文字列を送信します。
[Function(key)] 定められた機能（140種類以上ある）を実行します。keyは、Help->Key tableのキー機能一覧の表示において[ ]で囲んで示されるキーシンボルの2文字、あるいはそれを並べたものです。並べて書けば、続いて実行されます。
たとえば、[Function(FN)]は、[FileReopen]と、[Function(FPFX)]は、[FilePrint][FileExit]と同じです。
より一般に、dviout specials の形式のコマンドが許されます。
[FilePrint]dvioutに現在開いているファイルを印字するよう指示します。メニューでプリントを選んだときと動作は同じで、ダイアログが開きます。
[FilePrint(parameter:value ...)] 上記と同じですが、さらにプリントダイアログに表示されたパラメータの値の変更や[OK]ボタンを押して、印刷をすることができます。以下の parameter などの指定を、必要なもののみ空白で区切って並べます。たとえば
[FilePrint(From:5 To:10 OK:50)]
From:<n> <n>は印刷開始ページ
To:<n> <n>は印刷終了ページ
Copies:<n> <n>はコピー部数
Reduce:<n> <n>は拡大縮小で、1000が等倍
Odd: 偶数ページのみ
Even: 奇数ページのみ
U2page: 袋とじ
BlankTop: 袋とじで最初のページを空白に
RightToLeft: 袋とじで右側のページを先に
Ujob:<n> Unite job(<n>=1 は ON、0 は OFF)
Collate: Collate Copies
Reverse: Reverse order
dviprt:<n> dviprt機能(<n>=1 は ON、0 は OFF)
OK:<n> <n>*100 mm 秒待ってから [OK] ボタンを押す。
デフォルトは、1000 mm 秒 = 1 秒 で 最短 0.1 秒、最長2分
--- XTYP_REQUESTトランザクション ---
TEXPKやyのような任意のパラメータをアイテムとして渡すことにより、その値を得ることができます。結果は、Option->All Parametersの = 以下で示されるような文字列で返されます。
通常のパラメータの他に、以下のものが指定できます。
version dviout のバージョン番号、3.03.2のような文字列が得られる。
number 該当の dviout の番号。
dvifile 表示しているdviファイルのフルパス名。表示していない場合は、ヌルストリング。
DVIfile 上記と同じだが、ショートファイル名。
current_page 表示しているページ番号。10(6)のように、物理ページ（論理ページ）の形で得られる。
total_page dviファイルの最後のページ番号で、current_pageの場合と同様の形で得られる。
time_stamp dviファイルのタイムスタンプ。
--------------------------------------------
WinDvi, WinDviPROと上位互換と思われます。
なおこれらの機能はすべて独立にインプリメントされているので、今後の機能拡張に関してDDEを気にする必要はありません。
複数のXTYP_EXECUTEトランザクションコマンドを順に送信する代わりに、空白を置かず[.....][.....]のようにして、並べて一度に送信してもかまいません。コマンド列の長さは、最大1024byteです。
DDE使用例を参照してください。