秀丸で TeX を使う設定(アウトプット枠へ出力)

タイプセット時の標準出力をコマンドプロンプトではなく秀丸の「アウトプット枠」へ出力するマクロを作ってみました。

TeX ファイルから PostScript ファイルを生成する

platex 実行後に、続けて dvips を実行する秀丸マクロの例です。

$texfile = basename2;
$ext = rightstr( $texfile, 4 );
if ($ext == ".tex") {
	$base = leftstr( $texfile, strlen( $texfile )-4 );
	runex "cmd /c platex -interaction=nonstopmode -file-line-error " + $base + " && dvips " + $base
	, 1	     //sync    0:async 1:sync
	, 0, ""	 //stdin   0:none 1:auto 2:file 3:(reserve) 4:all 5:select
	, 7, ""	 //stdout  0:none 1:auto 2:file 3:add file  4:new 5:insert 6:replace
	, 7, ""	 //stderr  0:none 1:=out/auto 2:file 3:add file  4:new 5:insert 6:replace
	, 0, ""	 //folder  0:none 1:current 2:specify 3:(reserve) 4:exe's folder
	, 2	     //show    0:auto 1:show 2:hide
	, 0	     //nodraw  0:draw 1:no draw
	, 0	     //unicode 0:ansi 2:utf-16 6:utf-8
	;
} else {
 	message "拡張子(" + $ext + ")が .tex ではありません。";
}
endmacro;

2 年ほど前に書いたコマンドプロンプトへ出力するマクロとの主な違いは次の 2 点です。

1 -file-line-error

platex によるタイプセット時のエラーは、通常は、

! Undefined control sequence.
l.5 \sine

のように、「!エラーの内容」のフォーマットで出力されますが、オプション引数「-file-line-error」を与えて実行すると、

./test_error.tex:5: Undefined control sequence.
l.5 \sine

のように、「ファイル名:行番号:エラーの内容」のフォーマットで出力されます。

2 runex

秀丸の runex は全部で 13 個の引数を取ります(下記)が、このうち、第 5 引数を 7 にすると、アウトプット枠への出力になります。

runex ファイル名, 同期フラグ,
 標準入力フラグ, 標準入力ファイル名,
 標準出力フラグ, 標準出力ファイル名,
 標準エラー出力フラグ, 標準エラー出力ファイル名,
 フォルダフラグ, フォルダ名,
 表示フラグ,
 非描画フラグ,
 エンコード;

メリット・デメリット

コマンドプロンプトへ出力するマクロと比較すると、アウトプット枠へ出力する上記のマクロは、エラーが発生した場合、F4 キーをタイプすることで、エラー行にジャンプできるというメリットがあります。

hidemaru_output

一方、アウトプット枠の分だけ高さが減ってしまう点がデメリットです。