最近のW32TeXとguishell

名前: 山本和義
日時: 2011-02-17 03:23:14
IPアドレス: 115.176.197.*

2年ほどW32TeXの更新を行っていなかったのですが,今日行いまして,guishell が いや〜な反応をしておりましたので報告いたします(単なる報告と思っていただいて 結構です).なお,コマンドプロンプト(というか素のcmd.exe)では何の問題も起こらず 正常に動作しています.まず結論から, 結論: guishellは,最近のW32TeX実行系(platex.exeなど)がプロンプトを出した場合, 最初の入力を無視する(無視される)ようである. こちらの環境は,OS: WindowsXP sp3,W32TeX: 2/16の時点のものをフルインストール, guishell: ver.1.39.1 であり,マクロからDDL接続でguishellを呼ぶかどうかは関係 なく同様な動作をします. example として次のものを使ってみます(\Errorone, \Errortwoは見定義であると します). %%% test.tex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass{jarticle} \begin{document} test1 \Errorone test2 \Errortwo test3 \end{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% これを guishell 環境下で platex.exe でタイプセットすると,当然のことながら \Errorone の部分でストップします.そこで,x[Enter] とすると,画面表示は ! Undefined control sequence. l.5 \Errorone ? x となって止まります(log file では,"? " のように x も表示されていません). ここで,何も考えずに [Enter] を入力すると,画面表示は ! Undefined control sequence. l.9 \Errortwo ? に進みます.ここで x[Enter] を入力すると正常に終了します.つまり,1回目の x[Enter] は無視され,その次の [Enter] で error がスキップされ,2回目の x[Enter] は正常に処理された,ということです.解決方法としては, 解決方法: guishellで最近のW32TeXを扱う場合には,TeXのプロンプトに対し ともかく一回 [Enter] を入力しておく. ということになります.guishell というのは,その名の通りある種の shell なの ですが,標準入出力関係が(W32TeXに対して)少しうまく動いていないという気が します.また,guishell 内部から cmd.exe を呼び出して,platex test.tex と した場合も状況は同様です(これは無意味なことを書いているのかもしれませんが). 次に,乙部さんの TeXmac(秀丸エディタのマクロです)を用いてguishellを呼び出した 場合の挙動について述べてみます.なお,状況としては,DDE接続でguishellが呼び 出されており,"e"の入力は"x"に変更されるという状況にしてあります.この状況で 上記の test.tex をタイプセットすると, ! Undefined control sequence. l.5 \Errorone ? の状況でいったんストップします(これは全く正常です).次に,e[Enter] と入力すると ! Undefined control sequence. l.5 \Errorone ? x となりストップします.画面上では,e と入力したときには e と表示され,その後 [Enter] を入力した段階で,e が x に変更されストップします.動作としては上記と 同じで,この e[Enter] という入力は無視されます.この後に [Enter] を入力すれば error がスキップされるし,そうではなくて e[Enter] と入力すればguishellの仕様に 従ってエラー行ジャンプが引き起こります. えー,こんな状況です.コマンドプロンプト(素の cmd.exe)では何の問題も引きおこ らないので,guishell側の標準入出力の扱いの問題のように思えます.すなわち, そろそろguishellは使えなくなってきたなという感じなのですが,何か気にとめて くれる人もいるのかもしれないと思い書いてみました.

この書き込みへの返事:

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