WinTpicファイルをEPSに変換するための自動化スクリプト

名前: munepi
日時: 2006-04-29 17:49:21
IPアドレス: 210.174.62.*

先日はお世話になりましたので、微力ながらコミュニティに貢献できればと 思いまして、投稿致しました。 wtctoeps.vbs (Windows)とwtctoeps.sh (Linux/UNIX)を作りました。 Windowsの方ははVBScript、Linux/UNIXの方はシェルスクリプトです。 必要な環境は、当然ながらTeX環境は必須で、 ・ps2eps ← 要Perl http://www.tm.uka.de/~bless/ps2eps.html ・(Windowsのみ)ActivePerl http://www.ActiveState.com/ActivePerl/ が必要です。 [wtctoeps.vbsの使い方] (複数個の)WinTpicファイルをwtctoeps.vbsにドラッグ&ドロップ するだけです。 [wtctoeps.shの使い方] (複数個に対応させていませんが、) wtctoeps [inputfile.{wtc/tex}] [outfile.eps] の方式です。 ----- wtctoeps.vbs ここから ScriptName = "wtctoeps.vbs for Windows ver.0.02β 2006/04/28 by munepi" ' Munehiro Yamamoto <myamamoto _at_mark_ g.math.s.chiba-u.ac.jp> ' Filter for WinTpic file (wtc/tex) to EPS file (eps) '********************************************************************** '[初期設定] '\usepackage{style files} LOADSTYS = "amsmath,emath" 'FONTSIZE FONTSIZE = "10pt" 'LATEX LATEX = "C:\usr\local\bin\platex.exe" 'DVIPS DVIPS = "C:\usr\local\bin\dvipsk.exe" 'PERL PERL = "C:\usr\local\share\ActivePerl\perl\bin\perl.exe" 'PSTOEPS PSTOEPS = "C:\usr\local\share\ps2eps\bin\ps2eps" '********************************************************************** Set WSHShell = WScript.CreateObject("WScript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject") '起動時パラメータ無しの場合、Usageを表示 Set objArgs = WScript.Arguments If objArgs.Count=0 Then Usage = "このスクリプトファイルに(複数の)WinTpicファイル(wtc/tex)をドラッグ&ドロップして下さい" MsgBox Usage,,ScriptName WScript.Quit End If 'D&Dファイルを順次取得 For I = 0 to objArgs.Count - 1 'WinTpicファイルをインクルードするtexファイルを生成 TEMP = "___wtpic___tmp" Set st = objFSO.CreateTextFile(objFSO.GetParentFolderName(objArgs(I)) & "\" & TEMP & ".tex", True) st.Write("\documentclass[a4paper," & FONTSIZE & "]{jarticle}\usepackage{" & LOADSTYS & "}\pagestyle{empty}\begin{document}\begin{center}\input{" & objFSO.GetFileName(objArgs(I)) & "}\end{center}\end{document}") st.Close() Do Until objFSO.FileExists(objFSO.GetParentFolderName(objArgs(I)) & "\" & TEMP & ".tex") = True WScript.Sleep 500 Loop 'バッチファイルの生成 Set st = objFSO.CreateTextFile(objFSO.GetParentFolderName(objArgs(I)) & "\" & TEMP & ".bat", True) st.Write(LATEX & " " & TEMP & ".tex") st.WriteBlankLines 1 st.Write(DVIPS & " -D1200 " & TEMP & ".dvi") st.WriteBlankLines 1 st.Write(PERL & " " & PSTOEPS & " -B -g -f " & TEMP & ".ps") st.WriteBlankLines 1 st.Write("copy " & TEMP & ".eps " & objFSO.GetBaseName(objArgs(I)) & ".eps") st.WriteBlankLines 1 st.Write("del /q " & TEMP & ".*") st.WriteBlankLines 1 st.Close() Do Until objFSO.FileExists(objFSO.GetParentFolderName(objArgs(I)) & "\" & TEMP & ".bat") = True WScript.Sleep 500 Loop 'バッチ処理 WSHShell.CurrentDirectory = objFSO.GetParentFolderName(objArgs(I)) WSHShell.Run objFSO.GetParentFolderName(objArgs(I)) & "\" & TEMP & ".bat" Do Until objFSO.FileExists(objFSO.GetParentFolderName(objArgs(I)) & "\" & objFSO.GetBaseName(objArgs(I)) & ".eps") = True WScript.Sleep 500 Loop Do Until objFSO.FileExists(objFSO.GetParentFolderName(objArgs(I)) & "\" & TEMP & ".tex") = False WScript.Sleep 500 Loop Do Until objFSO.FileExists(objFSO.GetParentFolderName(objArgs(I)) & "\" & TEMP & ".log") = False WScript.Sleep 500 Loop Do Until objFSO.FileExists(objFSO.GetParentFolderName(objArgs(I)) & "\" & TEMP & ".aux") = False WScript.Sleep 500 Loop Do Until objFSO.FileExists(objFSO.GetParentFolderName(objArgs(I)) & "\" & TEMP & ".dvi") = False WScript.Sleep 500 Loop Do Until objFSO.FileExists(objFSO.GetParentFolderName(objArgs(I)) & "\" & TEMP & ".ps") = False WScript.Sleep 500 Loop Do Until objFSO.FileExists(objFSO.GetParentFolderName(objArgs(I)) & "\" & TEMP & ".eps") = False WScript.Sleep 500 Loop Next MsgBox "Complete.",,ScriptName ----- wtctoeps.vbs ここまで ----- wtctoeps.sh ここから #!/bin/sh ### wtctoeps.sh for Linux/UNIX based on wtctoeps.vbs ver.0.02b ### Filter for WinTpic file (wtc/tex) to EPS file (eps) ### ver.0.01 2006/04/28 by munepi ### Munehiro Yamamoto <myamamoto _at_mark_ g.math.s.chiba-u.ac.jp> # Settings LOADSTYS=amsmath FONTSIZE=10pt NKF=/cygdrive/c/usr/local/bin/nkf LATEX=platex DVIPS=dvipsk #PERL=/cygdrive/c/usr/local/share/ActivePerl/perl/bin/perl.exe PSTOEPS=/cygdrive/c/usr/local/share/ps2eps/bin/ps2eps #-------------------------------------------------------------- if [ $# -ne 2 ]; then echo "Usage: wtctoeps [inputfile.{wtc/tex}] [outfile.eps]" exit 1 fi TEMP=___wtpic___tmp $NKF --unix --euc $1 > $TEMP.wtc echo "\documentclass[a4paper,"$FONTSIZE"]{jarticle}" > $TEMP.tex echo "\usepackage{"$LOADSTYS"}" >> $TEMP.tex echo "\pagestyle{empty}" >> $TEMP.tex echo "\begin{document}" >> $TEMP.tex echo "\begin{center}" >> $TEMP.tex echo "\input{"$TEMP".wtc}" >> $TEMP.tex echo "\end{center}" >> $TEMP.tex echo "\end{document}" >> $TEMP.tex $LATEX $TEMP.tex $DVIPS -D1200 $TEMP.dvi -o $TEMP.ps #$PERL $PSTOEPS -B -g -f $TEMP.ps $PSTOEPS -B -g -f $TEMP.ps cp $TEMP.eps $2 rm -f $TEMP.* exit 0 ----- wtctoeps.sh ここまで

この書き込みへの返事:

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