WinShellでdvioutのコマンドを下のように設定していた。
dviout.exe -1 “%s.dvi” “# %l ‘%c.tex'”
Cannot find ‘# 39 ‘D:\study\abst\Myclass.tex”
という感じで表示された。
MyclassはMyclass.clsというドキュメントクラスファイルを作成し、\documentclassで読み込んでいるファイル名だった。
何がいけないんだろうと色々調べてみたら、dvioutへ送っているパラメーターがおかしくなっていたかららしい。
取り敢えずWinShellの外部ソフト実行コマンドラインのパラメータを調べてみた。
WinShellのヘルプには以下のように載ってた。
-
- %s use the document as specified in the status bar
-
- %ps use the document as specified in the status bar with full pathname
-
- %pp use the project pathname
-
- %c use the current document
-
- %pc use the current document with full pathname
-
- xxx an extension for the document, like tex, bib, etc.
-
- %ex the extension of the current document
-
- %l the current cursor line of the current document; ‘0’ if no line is given
んで、dvioutのヘルプで引数としてどんなパラメータ送るようになってるか調べた。
以下のような感じだそうだ。
3. コマンドラインからの起動
dviout [parameters] [foo [option]]
parameters : -mag=2 -BMP=3 のようにスペースで区切って指定する。-Set=!m はウインドを最大化で起動することを意味する。-NULL
というパラメータは、Registryからのパラメータの読み込みを行わない、という特別の指定を意味する。
ただし、パラメータの最初を
-NULL=(,)-(,))
とすると、dviout のWindowsサイズの指定(左上と右下のピクセル単位での座標)と解釈される。View Menuで各種バーを消して、
-NULL=(0,-40)-(1024,768)などと指定することにより、画面全体がプレビュー画面になる。
一方、パラメータの最初を
-1
とすると、最初の dviout の起動、あるいは既にそれが起動されていれば、最初の dviout へのパラメータの送付を意味する(最初の dviout で no more dviout を指定したとの同様な結果となる)。
一般に、たとえば2番目の dviout へのパラメータの送付は、パラメータの最初を -2 とする。
foo : dviファイルの指定で、拡張子の .dvi は省略可能。なお、foo がディレクトリ名のときは、そのディレクトリ中のdviファイルを選択するダイアログが開く。
option : 数字 のときは、最初に表示するページを表す。
h とすると、以前に foo.dvi を表示した記録が残っていれば、それを抜け出たときのページを表示する。
#name とすると、HyperTeX のとび先のラベル名が name の箇所を含むページを表示する。
“# line_number source_file” とすると source specials によって該当部分が表示される(# の後に空白が入る)。例えば、
c:.exe foo.dvi “# 234 foo.tex”
実行ファイル名: dviout.exe のファイル名を dvioutj.exe/dvioute.exe と変更すると、(自動判断ではなくて)Windows system の言語がそれぞれ日本語/英語であると見なす実行ファイルとなる。
注意: dviout は、複数個起動できます。その最大個数は、-multi: で変更できます。それ以上の dviout を起動して新たなdviファイルをプレビューしようとすると、デフォルトでは、最後に起動した dviout が、そのdviファイルを表示します(cf. no more dviout)。
dviout の終了時には、以下の状態が保存され、次回の起動時に引き継がれます。
・Tool Bar, Scroll Bar, Status Bar, Page Slider の表示/非表示 および、Tool Bar のボタン
・(CTRLボタンなしの)Loupeのサイズ、拡大率、形、移動速度
・マウスカーソルの形
ただし、File -> Quit で終了した場合や、複数個のdvioutを同時起動した場合の最初のdviout以外の状態の保存はされません。
つまり、dviout.exe -1 “%s.dvi” “# %l ‘%c.tex'”という感じで実行すると、メインでコンパイルしているtexファイル名(%s)を持ってるdviファイルを開いて、そのdviファイルの現在開いているtexファイル(%c)の行(%l)に一致する場所へ飛ぶということになるらしい。
どうやら、俺がクラスファイルを編集している状態でこのコマンドを実行していたため、%cはクラスファイル名となり、dvioutで開いたdviファイルに%c.texで記述された部分が無いということを怒られていたらしい。
備考: 旧ブログ移植
コメント