Windows 10 で TeXLive + Emacs + AUCTeX + SumatraPDF の快適 TeX 環境を構築する

クリーンインストールした Windows 10 で Tex 環境を構築したとき(2016年1月)のメモ. Emacs 上の AUCTeX で TeX を編集・コンパイルし SumatraPDF で閲覧する環境を構築する.

環境

  • Windows 10 Home
  • TeXLive 2015
  • Emacs 24.5.1
  • SumatraPDF 3.1.1
  • AUCTeX 11.89

インストール

まず,必要なもの(TeXLive,Emacs, SumatraPDF)をインストールする.

TeXLive のインストール

Install Tex Live over the Internet (www.tug.org) にある install-tl-windows.exe を利用したネットワークインストールが推奨されているが,ダウンロードが途中で停止して進まなくなるので,Acquiring TeX Live as an ISO image から DVD イメージをダウンロードした.ISOイメージを展開後, install-tl-windows.bat を実行した.

Emacs のインストール

emacs-w64 (sourceforge.net) から 64-bit Windows に最適化された Emacs のバイナリを取得する.2016年1月18日時点では24.5.1が最新の安定版だった.

まだ, auctexauctex-latexmk をインストールしていない場合は M-x list-packages でインストールする.

SumatoraPDF のインストール

Sumatra PDFダウンロード から64-bit 版をインストールする.デフォルトでは C:\Program Files\SumatraPDF にインストールされる.このパスを覚えておく.

設定

次に Emacs の AUCTeX の設定と Emacs と SumatraPDF を連携させる設定を行う.

Emacs の設定

秘伝のタレ状態になっている Emacs の設定.現在,問題なく動作しているの大丈夫っぽい?

次は,過去のメモによると,AUCTeX の基本的な設定らしい.

(add-hook 'outline-minor-mode-hook
          (lambda () (local-set-key "\C-c\C-o"
                                    outline-mode-prefix-map)))
(load "auctex.el" nil t t) ;; activate AUCTeX
(setq Tex-auto-save t)
(setq Tex-parse-self t)
; (load "preview-latex.el" nil t t)

(add-hook 'LaTeX-mode-hook
          (lambda ()
            (TeX-PDF-mode) ;; produce pdf
            (TeX-source-correlate-mode) ;; forward and inverse seach
            (turn-on-reftex) ;; enable RefTex
            (LaTeX-math-mode)
            (outline-minor-mode)
            ))

次は AUCTeX上で latexmk を利用するための設定のようだ.

(require 'auctex-latexmk)
(auctex-latexmk-setup)

これは AUCTeX 上でコンパイル後に SumatraPDF でコンパイルされた pdf ファイルを表示する設定.しかも,現在編集中の箇所がハイライトされるので大変便利である.

(when (eq system-type 'windows-nt)
  (custom-set-variables
   '(TeX-source-correlate-method (quote synctex))
   '(TeX-source-correlate-mode t)
   '(TeX-source-correlate-start-server (quote Always))
   '(TeX-view-program-list (quote (("Sumatra PDF" ("\"C:/Program Files/SumatraPDF/SumatraPDF.exe\" -reuse-instance" (mode-io-correlate " -forward-search %b %n") " %o")))))
   '(TeX-view-program-selection (quote (((output-dvi style-pstricks) "dvips and start") (output-dvi "Yap") (output-pdf "Sumatra PDF") (output-html "start"))))
   )
  )

SumatraPDF の設定

SumatraPDF でコンパイルされた pdf ファイルを閲覧中にダブルクリックすると Emacs で該当箇所にジャンプできる.これも大変便利である.

SumatraPDF の [三]-[設定(S)]-[オプション(O)…] の逆順検索コマンドラインの設定に以下を追加する.

C:\path\to\emacs\dir\bin\emacsclientw.exe --no-wait +%l "%f"

なお, init.el(server-start) (が未設定の場合は)追加しておく.

.latexmkrc や ソースファイルの設定

英語文書の場合は以下の内容の .latexmkrc を作成する.

$pdf_mode = 1;
$pdflatex = 'pdflatex -file-line-error -synctex=1';
$pdf_previewer = 'start "c:/Program Files/SumatraPDF/SumatraPDF.exe" %O %S';

日本語文書の場合は以下の .latexmkrc を作成する.

$pdf_mode = 1;
$pdflatex = "lualatex %O %S -file-line-error -synctex=1";
$pdf_previewer = 'start "c:/Program Files/SumatraPDF/SumatraPDF.exe" %O %S';

また,日本語文書の場合はドキュメントクラスを次のように指定する.

\documentclass[]{ltjsarticle}

以下をソースファイルの最後に追加しておく(これが何を意味するかは忘れた…).

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% TeX-command-default: "LatexMk"
%%% End:

LaTeX ファイルを分割している場合,マスターファイルが main.tex の場合,以下のように指定すると,子ファイル(?)でコンパイルを実行してもマスターファイルからコンパイルが開始されて幸せになれる.

%%% Local Variables:
%%% mode: latex
%%% TeX-master: "main"
%%% TeX-command-default: "LatexMk"
%%% End:

自動コンパイル

以下のように latexmk を起動するとファイルの変更を検知して,その都度再コンパイルしてくれる.

latexmk -pvc --interaction=nonstopmode main.tex

おわりに

あとは文章を書くだけです!