Re: エディタ経由でタイプセット

名前: みなも
日時: 2007-08-20 16:11:55
IPアドレス: 202.233.240.*

>>49148 なにやら話が膠着してきているようですので,ちょっと別視点から。 以前 MIFES というエディタ用の(簡易) TeX 統合環境マクロを作った ことがありますので,マクロを作る側から見たチェックポイントを。 まず,エディタマクロからどうやって起動するべきプログラム(仮に abc.exe とします) を起動するか。(処理するファイルを仮に test.ttt とします。) 1. カレントディレクトリ(現在作業中のディレクトリ=フォルダ)に abc.exe があれば,      abc.exe test.ttt だけで起動できます。 2. パスが通ったディレクトリに abc.exe があれば,やはり      abc.exe test.ttt だけで起動できます。 3. abc.exe が特定の拡張子 (仮に .ttt とします) のファイルのみを処理する プログラムで,すでに Windows に .ttt という拡張子が abc.exe に関連づけ られているときは,      start test.ttt で起動できます。 4. abc.exe の存在するディレクトリをフルパスで指定すれば,パスが通ってなくても 関連づけされていなくても起動できます。 たとえば,abc.exe が C:\user\bin\ にあるなら      C:\user\bin\abc.exe test.ttt で,起動できます。 どの方式を採用するかはマクロの作者の自由ですので,今回のマクロがどれであるかは わかりませんが,昨今のシステムの巨大化を考えると 1. はまずないと思います。 2. 3. 4. はマクロの該当部分を見ればすぐ見分けがつくと思います。 ちなみに,プログラムがうまく起動しないとき, 2. だった場合はパスが通っているかチェック, 3. だった場合,関連づけが適切かどうかをチェックです。 4. だった場合,マクロに指定されているパスと実際のパスが違っている場合は, もちろん起動しません。この場合,「マクロ」か「実際」どちらかに統一する必要があります。 次に,処理されるべきファイル(上の例では test.ttt)をどうやって見つけるか。 (多分 ヒョン さんの環境ではこっちの設定がおかしくなっていると思われます) 1. カレントディレクトリに text.ttt があれば,text.ttt とだけ指定すれば OK. 2. abc.exe が特定の環境変数または設定ファイルを読み込む形で,特定のディレクトリを 探しに行くなら,そこにある test.ttt も test.ttt とだけ指定すれば OK. 3. そうでないときは test.ttt もフルパスで指定。たとえば test.ttt が C:\user\MyDoc\ にあるなら C:\user\MyDoc\test.ttt と指定。これなら確実にファイルが見つかります。 エディタマクロが起動するとき,カレントディレクトリは現在編集中のファイル (この場合 test.ttt) のあるディレクトリのはずですので,1. を仮定してマクロが作られることは あり得ると思います。が,この場合,カレントディレクトリを変更してしまうような 別のマクロを実行してしまうと仮定が崩れてしまうおそれがあります。 また,abc.exe やそれを呼び出すエディタマクロが 2. を仮定して作られていて,なおかつ, 必要な環境変数や設定ファイルがなくなったり壊れたりした場合, abc.exe は必要なファイルを探せなくなります。 この辺もマクロ作者がどう作ったかに依存しますので,エディタのマニュアルを読んだり マクロを解析したりして,どの方式か調べれば「もとの正しい」環境に復帰できると思われます。 ちなみに (エディタマクロとは切り離して読んでほしいのですが) TeX は 2. の方式を採用しています。 (\ptex)\share\texmf\web2c\texmf.cnf というファイルに書かれてある内容に沿って .sty ファイルなどを探しに行きます。 (ちょっと古い TeX システムだと環境変数も併用していたんですが,ヒョン さんの TeX 環境がどうだかはわかりません。) このファイルを書き換えれば .sty ファイルの格納場所も任意に変更可能なのですが, 危険ばかりでメリットはほとんどないので,「標準」の格納場所に保存することを お勧めします。(その「標準」の正体が texmf.cnf の内容と言うことです。)

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)