初めての CotEditor(TeX を使う設定)続々

CotEditor で TeX を使う設定の続編は失敗作でしたので、改良版を作りました。

以下のスクリプトのさらなる改良版がこちらにあります。


TeX を使う設定(改々)

前回作成した「platex でタイプセットした後、dvips で PS ファイルを生成」するスクリプト(改)は、Terminal で別のプログラムを起動していても、御構い無しに命令を実行しようとします。従って、例えば、python で計算しながら TeX 文書を作成するといった状況などで大変困りますので、改善方法を探してみました。

参考にさせていただいたサイトは下記の通りです。ありがとうございました。

platex でタイプセットし、dvips で PostScript 化(改々)

ターミナルが起動しているか否かは気にせず、window が存在していてかつ busy でないかどうかを調べれば良いようです。

tell application "CotEditor"
	if exists front document then
		set thisfile to path of front document as Unicode text
		set thisdir to (do shell script "/usr/bin/dirname \"" & thisfile & "\"")
		set thisbase to thisdir & "/" & (do shell script "/usr/bin/basename \"" & thisfile & "\" .tex")
		set thistex to thisbase & ".tex"

		tell application "System Events"
			if exists file thistex then
				tell application "Terminal"
					if (exists window 1) and not busy of window 1 then
						do script "cd \"" & thisdir & "\" && platex -interaction=nonstopmode \"" & thisbase & "\" && dvips \"" & thisbase & "\"" in window 1
					else
						do script "cd \"" & thisdir & "\" && platex -interaction=nonstopmode \"" & thisbase & "\" && dvips \"" & thisbase & "\""
						activate							
					end if
				end tell
			else
				display alert "TeX ファイルではないようです。"
			end if
		end tell
		activate
	end if
end tell

platex でタイプセットし、dvips で PostScript 化し、更に ps2pdf で PDF 化(改々)

「platex でタイプセットし、dvips で PostScript 化(改々)」と同様です。

tell application "CotEditor"
	if exists front document then
		set thisfile to path of front document as Unicode text
		set thisdir to (do shell script "/usr/bin/dirname \"" & thisfile & "\"")
		set thisbase to thisdir & "/" & (do shell script "/usr/bin/basename \"" & thisfile & "\" .tex")
		set thistex to thisbase & ".tex"
		set thisps to thisbase & ".ps"

		tell application "System Events"
			if exists file thistex then
				tell application "Terminal"
					if (exists window 1) and not busy of window 1 then
						do script "cd \"" & thisdir & "\" && platex -interaction=nonstopmode \"" & thisbase & "\" && dvips \"" & thisbase & "\"" & "&& ps2pdfne \"" & thisps & "\"" in window 1
					else
						do script "cd \"" & thisdir & "\" && platex -interaction=nonstopmode \"" & thisbase & "\" && dvips \"" & thisbase & "\"" & "&& ps2pdfne \"" & thisps & "\""
						activate
					end if
				end tell
			else
				display alert "TeX ファイルではないようです。"
			end if
		end tell
		activate
	end if
end tell

PS ファイルを gv で開く(改)

同じ理由により、「PS ファイルを gv で開く」スクリプトも改良が必要でした。

tell application "CotEditor"
	if exists front document then
		set thisfile to path of front document as Unicode text
		set thisdir to (do shell script "/usr/bin/dirname \"" & thisfile & "\"")
		set thisbase to thisdir & "/" & (do shell script "/usr/bin/basename \"" & thisfile & "\" .tex")
		set thisps to thisbase & ".ps"
	end if
end tell

tell application "System Events"
	if exists file thisps then 
		tell application "Terminal"
			if (exists window 1) and not busy of window 1 then
				do script "/Applications/Ghostscript.app/gv \"" & thisps & "\"" in window 1
			else
				do script "/Applications/Ghostscript.app/gv \"" & thisps & "\""
				activate
			end if 
		end tell
	else
		display alert "PostScript ファイルが存在しないようです。"
	end if
end tell