TeXShop と外部エディタの連携

TeXShop は外部エディタを使って編集できるように設定できる (MacWiki: TeXShop ヘルプ (2-04) 外部エディタを使用する)。そこで Mac OS X の有名なエディタ Jedit X からの使用を試してみる。私自身は Jedit X は主に RTF を扱うときやファイル検索に利用している。とりわけ、マルチファイルに対応した検索/置換機能はすぐれていて、正規表現が分からないときはここから勉強したりする (そのため結局記憶に残らず、いつまでも覚えない…)。

この Jedit X から AppleScript を介してコンパイル作業とプレビューを TeXShop に任せてみる。年季の入った Jedit ユーザーはすでに馴染んだマクロで TeX 作業の効率化を図っていることだろう。私自身は Jedit をほとんど使いこなせていないのだが、AppleScript が自由に書けずなかなか勉強する機会もないので、今回はちょうどよい題材なので試してみた。TeXShop の「環境設定」は 前回 と同じく「外部エディタでソースを編集」にチェックが入っており、LaTeX プログラムには latexmk が用いられるよう設定してある。他の作業環境は以下の通り。

  • Mac OS X: 10.6.8
  • TeXShop: 2.43
  • Jedit X: 2.27
  • pTeX: 3.141592-p3.1.10 (utf8.euc) (Web2C 7.5.4), via Macports
  • latexmk: 4.25

AppleScript の情報は Apple のサポートMacWiki の AppleScript, AppleScript の穴, Applescript のごく基本的なサンプル などから得たが、O’Reilly 本 の Ebook がでたら購入して勉強してみようと思う。

結局試行錯誤の末、次のようなものになった (jedit-texshop.scpt)。TeXShop を呼び出してからは前回 (orgtexshop.scpt) と同じだ。

-- AppleScript to transfer the current Jedit X document to TeXShop
tell application "Jedit X"
    try
        tell front document
            set thePath to path as string
            if thePath is equal to "" then
                display dialog "最初にファイルを保存してください。" buttons {"OK"} default button 1 with icon stop
                return
            end if
            set theFileInfo to info for thePath
            set theFileKind to kind of theFileInfo
            if theFileKind is not "TeX Document" then
                display dialog "拡張子 .tex のファイルを指定してください。" buttons {"OK"} default button 1 with icon stop
                return
            end if
            if modified then
                display dialog "変更を保存しますか?" buttons {"キャンセル", "保存"} default button 2 with icon caution
                save
            end if
            tell application "TeXShop"
                activate
                set theDoc to open ((POSIX file thePath) as alias)
                try
                    tell theDoc to latexinteractive
                on error
                    set theDoc to front document
                    tell theDoc to latexinteractive
                end try
            end tell
        end tell
    on error
        beep 1
    end try
end tell

このスクリプトは特に Jedit X に依存していないので、はじめの “tell application Jedit X” の部分を書き換えれば (例えば “TextEdit” 等)、他のテキストエディタにも敷衍することが可能だと思う。

Jedit X の「スクリプトウインドウを表示」して、「+」でこのスクリプトを追加し、ショートカットを適当に設定する (下の図では「⌘T」)。

https://skalldan.files.wordpress.com/2011/07/wpid-jedit_script.png

TeXShop の設定では LaTeX プログラムに latexmk を指定したが、その場合、BibTeX や makeindex などの処理を含むケースでも適切に判断して複数回コンパイルしてくれる。latexmk 設定ファイルには例えば次のように書いておくと良い。

~/.latexmkrc:

$latex  = 'platex -kanji=utf8 -src-specials -interaction=nonstopmode';
$bibtex = 'jbibtex -kanji=utf8';
$dvipdf  = 'dvipdfmx %O -o %D %S';
$makeindex  = 'mendex -U -r -c -s dot.ist';
$pdf_previewer = 'open -a TeXShop.app %O %S';
$pdf_mode = 3;
$pdf_update_method = 0;

以上の設定で次のような BibTeX や makeindex 処理を含んだ TeX 文書であっても Jedit X から「⌘T」を一回押すだけで、TeXShop のコンソール画面が開き、コンパイルに成功すればそのままプレビューされるはずだ。

テストファイル (jedit_texshop.tex):

documentclass[a4j,11pt]{jsarticle}
usepackage[T1]{fontenc}
usepackage[deluxe,multi]{otf}
usepackage{txfonts}
usepackage[setpagesize=false,dvipdfmx,colorlinks,%
linkcolor=red,urlcolor=green,citecolor=blue]{hyperref}
usepackage{natbib}
usepackage{makeidx}
makeindex

begin{document}
title{TeXShop と外部エディタの連携}
author{}
date{}
maketitle
tableofcontents

section{草枕}
label{sec:1}

山路index{やまみち@山路}を登りながら、こう考えた。智に働けば角が立つ。情に棹させ
ば流される。意地を通せば窮屈index{きゅうくつ@窮屈}だ。とかくに人の世は住みにく
いcitep{natsume_1990a}。

section{坊ちゃん}
label{sec:2}

親譲りindex{おやゆずり@親譲り}の無鉄砲index{むてっぽう@無鉄砲}で小供の時から損
ばかりしている。小学校に居る時分学校の二階から飛び降りて一週間ほど腰を抜かした事
があるcitep{natsume_1989}。

section{吾輩は猫である}
label{sec:3}

吾輩index{わがはい@吾輩}は猫である。名前はまだ無い。どこで生れたかとんと見
当index{けんとう@見当} がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いて
いた事だけは記憶しているcitep{natsume_1990b}。

printindex

bibliographystyle{jecon}
bibliography{natsume}

end{document}

BibTeX ファイル (natsume.bib):

@book{natsume_1989,
    title = {坊っちゃん},
    isbn = 4003101030,
    publisher = {岩波書店},
    author = {夏目 漱石},
    url = {http://www.aozora.gr.jp/cards/000148/card752.html},
    month = may,
    year = 1989
},

@book{natsume_1990a,
    title = {草枕},
    isbn = 4003101049,
    publisher = {岩波書店},
    author = {夏目 漱石},
    month = apr,
    url = {http://www.aozora.gr.jp/cards/000148/card776.html},
    year = 1990
},

@book{natsume_1990b,
    title = {吾輩は猫である},
    isbn = 4003101014,
    publisher = {岩波書店},
    author = {夏目 漱石},
    month = apr,
    url = {http://www.aozora.gr.jp/cards/000148/card789.html},
    year = 1990
},

PDF 出力結果 (jedit_texshop.pdf):

https://skalldan.files.wordpress.com/2011/07/wpid-texshop_jedit_13.png

https://skalldan.files.wordpress.com/2011/07/wpid-texshop_jedit_21.png

https://skalldan.files.wordpress.com/2011/07/wpid-texshop_jedit_31.png

サンプル (jedit_texshop_sample.zip) はよければテスト用に。依存パッケージはプリアンブルの通りで、BibTeX スタイルファイルには jecon.bst を使用、上記の BibTeX ファイル (natsume.bib) は Zotero を利用して Amazon から文献情報を得ている (cf. Zotero で文献管理)。

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s