Windows 7 で W32TeX を導入して日本語 SyncTeX を試してみる

ようやく

NTEmacs で UTF-8 な環境構築を試行錯誤 しつつエディタ環境が整ってきたので Windows 用の TeX ディストリビューション W32TeX を導入してみる。W32TeX 所収の pTeX は SyncTeX に対応している。TeX Live 2012 ではすべてのプラットフォームで実現されるらしいが一足先に。今回はこの日本語 SyncTeX が動作することを目標とする。

# Windows の TeX ユーザーは随分以前から経験してるのでしょうが...

W32TeX のインストール

簡易インストーラー texinst2011 が用意されている。インストールのトップディレクトリは C:/cygwin/usr/local/w32tex にした。せっかくなのでフルインストール用のアーカイブファイルすべてを c:/temp 以下にダウンロードした。インストールはコマンドプロンプトで、

cd "c:\cygwin\usr\local\w32tex"
texinst2011 c:/temp

とすれば完了する。

インストール完了後、環境設定から適宜パスの設定等を行う。私は以下をユーザー環境変数に加えた。

変数名 変数値
Path C:\cygwin\usr\local\w32tex\bin
BIBINPUTS %USERPROFILE%\texmf\bibtex\bib
BSTINPUTS %USERPROFILE%\texmf\bibtex\bst

導入方法は本家の説明や TeX Wiki の

が詳しい。

W32TeX では私が普段使用している多言語処理のためのパッケージをいくつか後から導入する必要があった。

を参考にひとまず ucs パッケージ、Babel の Japanese パッケージCarlisle パッケージ を texmf-local に入れておいた。

texmf-local
     └─tex
          ├─generic
          │   └─babel
          │        ├─japanese.dtx
          │        ├─japanese.ins
          │        └─japanese.ldf
          └─latex
               ├─carlisle
               │    └─scalefnt.sty
               └─ucs
                   ├─data
                   ├─ucs.sty
                   ├─ucsencs.def
                   └─utf8x.def

また /w32tex/share/texmf/doc/misc/otf/README.w32 には otf パッケージとヒラギノフォント等の利用方法が詳しく説明されている。

W32TeX と同じページから GPL Ghostscript 9.04 バイナリ、DVI ビューアとして dviout for Windows (安定版)、PDF ビューアとして Sumatra PDF をそれぞれインストールした。

Latexmk の設定

コンパイルには Latexmk を利用する。Perl は Cygwin のものを利用することにした。

$ /usr/bin/perl -v

This is perl, v5.10.1 (*) built for i686-cygwin-thread-multi-64int
(with 13 registered patches, see perl -V for more detail)

Copyright 1987-2009, Larry Wall

設定ファイル (~/.latexmkrc) の latex プログラムには、dviout や SumatraPDF でエディタと相互にジャンプする (forward/inverse search) ために、次のように platex にオプション (-src-specials と -synctex=1) を加えておく。bibtex など他のプログラムも適宜設定しておく。

$latex  = 'platex -guess-input-enc -src-specials -interaction=nonstopmode -synctex=1';
$bibtex = 'pbibtex';
$dvipdf  = 'dvipdfmx %O -o %D %S';
$makeindex  = 'mendex -U -r -c -s dot.ist';
$dvi_previewer ='dviout';
$pdf_previewer = 'cygstart %O %S';
$pdf_mode = 3;
$pdf_update_method = 0;

これで例えばコマンドラインから、

$ latexmk -pv hoge.tex

とすると標準の PDF ビューアで表示まで行なってくれる (要 cygstart)。

AUCTeX のインストール

AUCTeX のインストールと設定をメモしておく。導入は、

を参考に行った。

$ ./configure --with-emacs=/usr/local/share/emacs/bin/emacs.exe --with-lispdir=/usr/local/share/emacs/site-lisp --with-texmf-dir=/usr/local/w32tex/share/texmf
$ make
$ make install

概ねは Linux や Mac の設定ファイルをそのまま転用できるが、dviout や SumatraPDF の forward/inverse search のための設定は少し独特なので最小限の記述をメモしておく。

;;----------------------------------------
;; AucTeX
;;----------------------------------------
(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)
(setq TeX-japanese-process-output-coding-system 'utf-8-dos) ; *output* buffer の日本語文字化け対策, 通常はいらないと思う
(setq TeX-file-extensions '("tex" "sty" "cls" "ltx" "texi" "texinfo" "dtx"))
(setq kinsoku-limit 10)
(setq LaTeX-indent-level 4)
(setq LaTeX-item-indent 2)

;; Japanese LaTeX
(setq TeX-default-mode 'japanese-latex-mode)
(setq japanese-LaTeX-default-style "jsarticle")
(setq japanese-LaTeX-command-default "latexmk")

;; DVI Viewer, PDF Viewer
(setq TeX-view-program-list '(("DVIviewer" "dviout.exe -1 %d \"# %n %b\"") ; Dviout, option 注意!
                              ("PDFViewer" "sumatrapdf.exe %o"))) ; SumatraPDF

(setq TeX-view-program-selection '((output-dvi "DVIviewer")
                                   (output-pdf "PDFViewer")))

;; LaTeX mode hook
(add-hook 'LaTeX-mode-hook
          (lambda ()
            (TeX-source-specials-mode 1) ; source specials mode
            (setq TeX-source-specials-view-start-server t) ; server start without query
            ;; TeX Command List
            (add-to-list 'TeX-command-list
                         '("latexmk" "latexmk %t"
                           TeX-run-TeX nil (latex-mode) :help "Run ASCII pLaTeX")) ; latexmk
            (add-to-list 'TeX-command-list
                         '("pdfview" "sumatrapdf.exe %s.pdf"
                           TeX-run-background t nil)) ; sumatrapdf
            (add-to-list 'TeX-command-list
                         '("fwdsumatrapdf" "fwdsumatrapdf.exe %s.pdf %t %n"
                           TeX-run-discard-or-function t t :help "Forward search with SumatraPDF")) ; fwdsumatrapdf, synctex, option 注意!
            ))

dviout.exe, sumatrapdf.exe, fwdsumatrapdf.exe には Mklink コマンドでパスの通ったところにシンボリックリンクを張っておいた。そうでない場合、上の Emacs の設定にはフルパスで書く必要がある。

https://skalldan.files.wordpress.com/2011/11/wpid-which_dviout_etc.png

以下の TeX Wiki 内のページを参考にした。

dviout との連携

【必要なこと】
1. Emacs は TeX-source-specials-mode に、また server-start しておく。
2. platex -src-specials でコンパイル。
3. dviout.exe -1 hoge.dvi "# <LINENUMBER> hoge.tex" で呼び出す。
4. dviout 側のエディタ設定 (emacsclientw.exe)

1–3 は上記で設定済み。4 については、dviout の「option」「Setup Parameters」「Common」で、

src: c:\cygwin\usr\local\share\emacs\bin\emacsclientw.exe^s +%d "%s"

と設定しておく。

C-c C-c latexmk <RET> でコンパイル、C-c C-c View <RET> (or C-c C-v) で dviout が立ち上がる。該当箇所に Windows のカーソルが移動する (forward search)。dviout からはダブルクリックで NTEmacs にジャンプする (inverse search)。

dviout_src_specials.png

もろもろの設定は以下のページを参考にした。

SumatraPDF との連携

SumatraPDF は自動更新機能もあり、TeX の PDF ビューアに適している。

の説明通りにして forward search 用の fwdsumatrapdf.exe を作成しておく。

【必要なこと】
1. Emacs は server-start しておく。
2. platex -synctex=1 でコンパイル。
3. fwdsumatrapdf hoge.pdf hoge.tex <LINENUMBER> で呼び出す。
4. SumatraPDF 側のエディタ設定 (emacsclientw.exe)

1–3 は上記で設定済み。4 については、SumatraPDF の「設定」「オプション」の「逆順検索コマンドラインの設定」に以下を入力しておく。

c:\cygwin\usr\local\share\emacs\bin\emacsclientw.exe +%l "%f"

C-c C-c latexmk <RET> でコンパイル、C-c C-c fwdsumatrapdf <RET> で該当する PDF の箇所がハイライトされる (forward search)。PDF からはダブルクリックで NTEmacs に飛ぶ (inverse search)。

sumatra_synctex.png

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