●pTeX/UpTeX.app + TeXShopでshell-escapeを使う●



2010年1月16日作成


 TeXShopは本来、pdf(la)texをエンジンに用いるフロントエンド環境であり、そのエンジンは「環境設定」「内部設定」の「pdfTeX」欄で指定される。しかし一方でその隣には「TeX + dvips + distiller」という欄があり、ここでは(la)texソースからdviを得て、それをPDFに変換するための任意の手順を指定できるようになっている。そこで指定されるべきものは具体的には、latex, dvips, ps2pdfを連続的に実行するようなshell scriptが想定されている。p(la)texでの利用は、これを活用して、p(la)tex, dvipdfmxを連続して実行するshell scriptを、この欄で指定するかたちでなされており、そのためにTeXShopではあらかじめp(la)tex2pdf-sjisなどのスクリプト群が提供されている。ただしpTeX.app/UpTeX.appがベースとしているptetex3に含まれる最新のp(la)texでは、以前のものとはオプション引数の書式が変わってしまっているため、旧来の書式で記述されているp(la)tex2pdf-sjisなどは使えなくなってしまった。そこでpTeX/UpTeX.appでは、その代替としてdotexshopやXtexshopなどのスクリプト群を加えて、こちらを用いるようにしてある。
 このうちdotexshopは、platex, dvipdfmxを実行するもので、ソースの文字コードごとにファイル名末尾(-euc, -utf8など)の異なるものが用意されている。一方Xtexshopは、ソースの文字コードと、それがplatex, uplatexいずれのソースかを自動判別して、platex/uplatex, dvipdfmxを実行するものとなっている。しかし、いずれのスクリプトもPDFを得るための最低限の機能を提供する簡単なものであり、TeXShopの「pdfTeX」欄でpdf(la)texに“--shell-escape”などのオプション引数まで与えた指定をできるのと異なり、端的にスクリプトのファイル名を指定できるだけで、一切のオプションを受けつけない。これは“--shell-escape”の機能を常用するユーザーにとっては不便であろう。
 この問題を解決するには、スクリプトそのものをオプション引数を受けつけるように改良する手もあるが、これは「TeX + dvips + distiller」欄でオプションをも含めて指定しておくこと、すなわち不要な場合にも常時“--shell-escape”有効で実行されることになり、実はセキュリティ上あまり望ましくはない。そこでここでは、より簡便かつ安全な方法を示しておく。TeXShopでは常時用いる処理スクリプトとは別のスクリプトを指定・選択実行できるようになっており、それは具体的には「環境設定」「詳細」「パーソナルスクリプト」欄でスクリプトのファイル名を指定しておき、実行時には「タイプセット」メニューで「パーソナルスクリプト」にチェックを入れておくという方法をとる。そこで、dotexshop/Xtexshopのplatex処理部分に“--shell-escape”を加えたものを、たとえばdotexshop-se/Xtexshop-seといったファイル名で作成しておき、「パーソナルスクリプト」欄(の「LaTeXプログラム」のところ)に、それを指定しておいて、タイプセット時に必要に応じて切り替えて用いる、という方法を推奨しておく。
 pTeX/UpTeX.appの実体はバンドル・パッケージなので、コンテクスト・メニューの「パッケージの内容を表示」を選ぶと、その中身を見ることができる。dotexshop/Xtexshopは、そのなかのteTeX/binフォルダ内にあるので、それを同一フォルダ内に複製・適当なファイル名を付けて、エディタで開いて編集すればよい。変更部分は具体的には以下のとおりである。
・dotexshopの場合
 4行目の“platex $tex” を “platex --shell-escape $tex” に
・Xtexshopの場合
 16行目の“$PLATEX $KANJI $TEX” を “$PLATEX --shell-escape $KANJI $TEX” に
 なお、muskmelon.jpで配布されているgnuplotのように、Applicationsフォルダなど、/usr, /usr/local以下以外の場所に実行コマンドがインストールされるものの場合は、.bash_profileなどでパスを設定しておいても、その設定はTeXShopおよびそこから呼び出されるスクリプトには引き継がれない。よって“--shell-escape”処理でそういったコマンドを呼びたい場合には、dotexshop-se/Xtexshop-seなどのスクリプトの2行目あたりで直に、たとえば
export PATH=/Applications/pTeX.app/teTeX/bin:/Applications/gnuplot.app/bin:$PATH
のようにパスを設定しておくのがよいだろう。




Back to INDEX