おもこん

おもこんは「思いつくままにコンピュターの話し」の省略形です

VineLinux の Texworks (3)

Texworks の売りである synctex を使う方法


Vine Linux の Texworksでも書いた通り、Texworksの特長であるsynctexは、platexが対応していないため使えません。現在(2011/7/16)のところ、synctexに対応しているのは、Windowsで動くW32TEXの platex だけです。

Linux版の platex、eplatex が synctex に対応するのを待つというのも考えられますが、ここではもっと積極的な方法として、W32TEXの platex を Vine Linux で動かしてしまう方法を考えてみます。Windows のエミュレーションにはいくつか方法がありますが、簡単で実用的な手段として、Wineを使うことが考えられます。Wineについては以前にも書きました。(Vine Linux の Wine)。Wineのインストールについてはそちらを参照してください。

W32TEX のインストール


まず、当該のW32TEXウェブサイトを開きます。そこから必要なファイルをダウンロードして展開すれば良いだけで、特別なセットアップは必要ないのです。今回私は、自分の個人フォルダの下に「W32TEX」というフォルダを作り、その下にダウンロードし、展開しました。展開には tar を使います。ただし、xz という圧縮/展開のパッケージがないとうまくいきませんので、synapticを使ってインストールしておきます。以下のシェルスクリプトに書かれている10個のファイルをダウンロードしておきます。
tar -xJvf latex.tar.xz
tar -xJvf ltxpkgs.tar.xz
tar -xJvf mftools.tar.xz
tar -xJvf oldinputs.tar.xz
tar -xJvf pdftex-w32.tar.xz
tar -xJvf platex.tar.xz
tar -xJvf ptex-w32.tar.xz
tar -xJvf uptex-w32.tar.xz
tar -xJvf web2c-lib.tar.xz
tar -xJvf web2c-w32.tar.xz
シェルファイルを実行すると「bin」と「share」というフォルダ以下にツリー状に解凍できます。とりあえずこれで LaTeX のソースをコンパイルできています。

pdfWplatex の作成

Texworksのタイプセット用のシェルスクリプトとして、pdfWplatexを作ってみました。
#!/bin/bash
wine ~/W32TEX/bin/platex -kanji=utf8 -synctex=1 $1 || exit 1
dvipdfmx $1 || exit 1
これを「/usr/local/bin」フォルダに置きます。このフォルダには root でなければ書き込めないので注意してください。
次にTexworksの設定をします。Texworksを起動し、メニューの「編集」->「設定」とクリックし、ダイアログのタイプセットタブを開きます。真ん中やや下の、「タイプセットの方法」の右側の「+」ボタンをクリックして、「タイプセットの方法を設定する」ダイアログをオープンします。「名前」の欄には、「pdfWplatex」、「プログラム」の欄には「pdfWplatex」、「引き数」の欄には「$basename」と入力し、「実行後、PDFを表示する」にチェックをつけて「OK」ボタンをクリックします。「タイプセットの方法」の欄を下にスクロールすると、最下段に「pdfWplatex」が挿入されているはずです。

synctexをテストする


適当なLaTeXの日本語ソースファイルを開きます。メニューの下、緑色の三角の右側を pdfWplatex にして緑三角をクリックすると、タイプセットが始まります。タイプセットというのは、先ほど作った「pdfWplatex」のシェルスクリプトに、この日本語ソースファイルを引き数として渡して実行してくれるのです。うまくコンパイルが終わると、右半分にできあがった PDF ファイルのウィンドウがオープンします。そこで、PDF の適当な箇所で右クリックすると、「ソースの該当箇所へジャンプ」というポップアップメニューが現れます。それを選択すると、左側のソースファイルの対応する箇所がハイライトされます。これがソースとPDFを対応させるsynctexの機能です。

synctexは面白く、長いファイルになればなるほど、威力を発揮します。Wineを使って実行しているのはどうもすっきりはしませんが、一応満足できる出来だと思います。早くLinux版のplatexにもsynctexをサポートしてもらいたいと思います。

※ 以上の内容は、元々2011/2/3に書いたものを2011/7/16時点のwin32版platex状況に合わせて書き換えたものです。
(1)ダウンロードするファイル名が変更になっていたので、シェルファイルを修正した
(2)eplatexはplatexに統合されたので、eplatexと記述されていたところはすべてplatexに修正した。