2009年3月20日金曜日

sakuraエディタでTeX

こないだ、後輩にTeXの使い方を教える機会があって、フリーでいかにTeX環境を構築するかちゅうのをいろいろ考えた。

TeX+GS+GSViewとか本体
http://www.ms.u-tokyo.ac.jp/~abenori/mycreate/index.html
からインストーラーを頂いて、楽にインストールさせてもらう。

エディタ
sakuraでキーワード補完、色分け
マクロでplatex実行→dviout表示

がフリーでは一番楽なんじゃないかと思った。Winshellはなんか個人的に使いにくい…
そんなわけでplatex実行用のマクロを探す。
http://doter.seesaa.net/article/38297286.htmlからもらってきたものの、自分とこの環境ではMyDocumentとかにおいてあるTexファイルをコンパイルしようとするとエラーが出る。原因は、Document and Settingの空白っぽい。これだからWindowsでTexは…。というわけで、C直下に標準でインストールされるtexフォルダに一時的にコピーして、コンパイルするように変更する。
こんな感じ。あらかじめC:\tex\tempを作っとかないとエラーでる。終わった後にコピーしたtemp内のは消す仕様。JavaScript


var objShell = new ActiveXObject("WScript.Shell");
var myObject = new ActiveXObject("Scripting.FileSystemObject");
var i;
var pathlength;
var FileName; //原型ファイル名格納用
var TeXFileName; //TeXファイル名格納用
var DviFileName; //DVIファイル名格納用
var PathName ; //path名格納
var FileName2; //コピー先の名前を格納
Editor.FileSave(); //ファイル上書き保存
FileName=Editor.GetFileName(); //ファイルパスの取得

TeXFileName=""; //初期化
DviFileName=""; //初期化
PathName="";
FileName2="";


for(i=0;i<FileName.length;i++){
if(FileName.charAt(i)=="\\"){ //ファイルパスの「\」を「/」に変換
TeXFileName=TeXFileName+"/";
}else{
TeXFileName=TeXFileName+FileName.charAt(i);
}
if(i<FileName.length-3){ //拡張子をdviに変換
DviFileName=DviFileName+TeXFileName.charAt(i);
}else{
if(i==FileName.length-3)DviFileName=DviFileName+"d";
if(i==FileName.length-2)DviFileName=DviFileName+"v";
if(i==FileName.length-1)DviFileName=DviFileName+"i";
}
}

for(i=0;i<FileName.length;i++){
if (FileName.charAt(i)=="\\"){
pathlength=i+1;
}
}

for (i=0; i<pathlength;i++){
PathName=PathName+TeXFileName.charAt(i);
}

for (i=0;i<FileName.length-pathlength;i++){
FileName2=FileName2+TeXFileName.charAt(i+pathlength);

}
//objShell.Popup('FileNameは"' + FileName2 + '"です', 0, "ファイル名", 0); //debug用
myObject.CopyFile(TeXFileName, "C:/tex/temp/"+FileName2); //tempフォルダをあらかじめ作っておくこと
objShell.Run("C:/tex/bin/platex "+"C:/tex/temp/"+FileName2,1,1); //TeXコンパイラ実行(各自でパス変更)
objShell.Run("C:/tex/dviout/dviout.exe -1 "+DviFileName,1,0); //DVIビューアの実行(各自でパス変更)
myObject.DeleteFile("C:/tex/temp/"+FileName2);

0 コメント: