Emacs(AUCTeX / YaTeX)

Emacs で LaTeX を書く道は大きく二つあります。包括的な TeX/LaTeX 環境 AUCTeX(オークテック)と、日本語に厚い YaTeX(野鳥)。どちらもキーボード中心で、コンパイル・補完・相互参照・プレビューをエディタから直に操れます。学習曲線は急ですが、いったん手になじめば極めて速い。このページでは AUCTeX の設定、相棒の RefTeX、本文中に数式を描く preview-latex を順に見て、最後に日本語向けの YaTeX に触れます。

AUCTeX とは

Emacs 自体は TeX を組版しません。実際にコンパイルするのは、PC に入れた TeX Live(や MacTeX・MiKTeX)などのディストリビューションです。AUCTeX は、エディタとそのディストリビューションを橋渡しする拡張パッケージ。latexlatexmk を子プロセスとして起動し、エラーを拾って該当行へ飛び、環境や命令の補完、シンタックスハイライト、文書の折りたたみ、数式の入力支援までをまとめて提供します。前提は、ターミナルで latexmk --version が動く、つまり TeX のコマンドが PATH から呼べる ことだけです。

歴史的に AUCTeX には二つの主要モードがあります。LaTeX 文書用の **LaTeX-mode と、生の TeX/plain TeX 用の TeX-mode**。.tex を開くと AUCTeX が中身を見て適切なモードに入ります。配布形態は近年変わりました。バージョン 13.3(2024 年 1 月)が単独 tar.gz としての最後のリリース で、以降は Emacs 標準のパッケージ archive である GNU ELPA から配布されます(2026 年時点の系列は 14 系)。そのため現在の導入は、後述のとおり package.el で一発です。

Emacs のキー表記に不慣れなら、C-cControl を押しながら cC-c C-cControl を押したまま c, c と続けて打つ こと、M-xMeta(Alt または ESC)+ x を指します。AUCTeX のコマンドはほぼすべて、この C-c 始まりのキーに割り当てられています。

AUCTeX の設定

導入は二段階です。まず TeX Live など(2026 年なら TeX Live 2026)を入れて PATH を通す。次に Emacs から AUCTeX を入れます。GNU ELPA は標準で有効なので、M-x package-install RET auctex RET だけで入ります。設定ファイル init.el(または ~/.emacs.d/init.el)には、PDF 出力を既定にする TeX-PDF-mode、ソースと PDF を対応づける TeX-source-correlate-modeSyncTeX)あたりをまず書きます。

次は use-package を使った実用的な init.el の例です。TeX-source-correlate-methodsynctex にし、TeX-source-correlate-start-server を立てると、ビューアからソースへ戻る逆方向検索が使えます。reftex-modeLaTeX-math-mode も LaTeX バッファで自動的に有効化しています。

init.el
;; GNU ELPA is enabled by default; ensure it is initialised.
(require 'package)
(package-initialize)

(use-package tex
  :ensure auctex
  :hook ((LaTeX-mode . TeX-source-correlate-mode)   ; SyncTeX
         (LaTeX-mode . reftex-mode)                  ; cross-references
         (LaTeX-mode . LaTeX-math-mode))             ; ` math shortcuts
  :config
  (setq TeX-auto-save t           ; write parse data (the auto/ dir)
        TeX-parse-self t          ; scan the file for \usepackage etc.
        TeX-PDF-mode t)           ; produce PDF, not DVI
  ;; Tie source lines to PDF positions and run a server for inverse search.
  (setq TeX-source-correlate-method 'synctex
        TeX-source-correlate-start-server t))

TeX-parse-selfTeX-auto-save は、AUCTeX が文書を解析して \usepackage で読み込んだパッケージの命令まで補完候補に取り込み、その結果を auto/ ディレクトリにキャッシュさせる設定です。これで、使っているパッケージに応じた賢い補完が効きます。

コンパイルの中心は **C-c C-c**(TeX-command-master)です。これを押すとミニバッファが「次に何を実行するか」を訊いてきて、文書の状態に応じた既定(最初は LaTeX、参照が未解決なら再度 LaTeX、文献があれば BibTeX、最後に View)を提案します。Enter で受け入れて進めるのが基本の流れです。一方、**C-c C-a**(TeX-command-run-all)は、必要な処理を エラーが出るか完了するまで自動で連鎖 させ、成功すればビューアまで開いてくれます。「とにかく最後まで通して PDF を見たい」ときは C-c C-a が速い。

コンパイル器を latexmk に一本化 したいなら、auctex-latexmk パッケージを入れて (auctex-latexmk-setup) を呼びます。すると C-c C-c の選択肢に **LatexMk** が加わり、TeX-command-default"LatexMk" にしておけば既定がそれになります。latexmk は依存関係を見て必要な回数だけ処理を繰り返すので、「相互参照や目次のために何回まわすか」を自分で考えずに済みます。なお auctex-latexmk は AUCTeX の TeX-PDF-modeTeX-source-correlate-mode の状態を引き継ぎ、PDF 出力や -synctex=1 を自動で付けてくれます。

init.el
(use-package auctex-latexmk
  :ensure t
  :after tex
  :config
  ;; Make latexmk pick up TeX-PDF-mode (pass -pdf when PDF output is on).
  (setq auctex-latexmk-inherit-TeX-PDF-mode t)
  (auctex-latexmk-setup)
  ;; Offer LatexMk as the default action for C-c C-c.
  (setq-default TeX-command-default "LatexMk"))

エンジンや文献処理の細部は、プロジェクト直下の .latexmkrc に書くのが最も素直です(AUCTeX の設定とは独立で、C-c C-c から起動した latexmk もそれを読みます)。日本語なら例えば upLaTeX + dvipdfmx$latex$dvipdf に割り当て、$pdf_mode = 3 を選びます。詳しくはビルドツールのページを参照してください。

日常的に使う AUCTeX のキーを表にまとめます。name 列はそのままキーシーケンスです。

キーコマンド働き
C-c C-cTeX-command-master次の処理を選んで実行(LaTeX→View など)
C-c C-aTeX-command-run-all完了かエラーまで一括処理し、ビューアを開く
C-c `TeX-next-error次のエラー箇所へ移動(バッククォート)
C-c C-eLaTeX-environment環境を挿入(\begin..\end を補完)
C-c C-mTeX-insert-macro命令を名前で挿入(引数も補完)
C-c C-fTeX-font\textbf・\emph など書体を挿入

RefTeX — 相互参照と文献

RefTeX は、\label\ref\cite の管理に特化した相棒です。AUCTeX とは別物で、こちらは Emacs 本体に同梱 されています(別途インストール不要)。上の init.el のように reftex-mode を LaTeX バッファで有効にし、AUCTeX と連携させると、ラベル付けと参照が劇的に楽になります。

核心は、ラベルを自分で考えて打たなくてよい ことです。**C-c (**(reftex-label)は、いる場所(図・表・式・節)を見て妥当な接頭辞付きラベル(fig:tab:eq: など)を提案して挿入します。参照する側は **C-c )**(reftex-reference)で、既存ラベルの一覧から選ぶだけ。文献は **C-c [**(reftex-citation)で、.bib を正規表現で検索し、選んだ項目の \cite{...} を挿入します。そして **C-c =**(reftex-toc)は、文書全体の目次バッファを別ウィンドウに開き、節へジャンプしたり構成を俯瞰したりできます。

AUCTeX と深く統合するには、reftex-plug-into-AUCTeX を立てておきます。すると AUCTeX 側の \label 挿入や \ref\cite 補完が RefTeX 経由になり、二つのパッケージが一体に感じられます。複数ファイル構成(\include\input)でも、RefTeX はマスターファイルをたどって全ラベル・全文献を横断的に集めてくれます。

init.el
(use-package reftex
  :ensure nil                 ; bundled with Emacs
  :hook (LaTeX-mode . turn-on-reftex)
  :config
  (setq reftex-plug-into-AUCTeX t   ; cooperate with AUCTeX
        reftex-cite-format 'natbib)) ; or 'biblatex, etc.

preview-latex — 本文中のプレビュー

preview-latex は、数式・図・tikzpicture などを LaTeX で実際に組版し、その結果を 画像としてソースバッファのその場に重ねて表示 する機能です。AUCTeX に同梱されているので、別途入れる必要はありません。$...$\[...\]equation 環境のソースが、編集時はそのまま、確認時は組まれた数式として見える——WYSIWYG 風の手触りを、プレーンテキストのまま得られます。

操作は C-c C-p(Preview)始まりです。**C-c C-p C-p**(preview-at-point)は、カーソル位置の対象だけをプレビュー(再度押すとソースに戻る)。**C-c C-p C-b はバッファ全体、C-c C-p C-d は文書全体、C-c C-p C-r は選択範囲をプレビューします。C-c C-p C-c C-p** は領域のプレビューを消去します。内部では裏で LaTeX を走らせて画像を生成するため、初回は少し待ちます。

preview-latex は画像生成に Ghostscript と dvipng(または PDF→画像変換)を使うため、それらがディストリビューションに含まれていることが前提です(TeX Live なら通常そろっています)。とりわけ、長い数式や可換図式を多用する文書で、組版結果を一目で確認しながら書けるのが効きます。

YaTeX(野鳥)— 日本語向けの選択肢

YaTeX(野鳥、やてふ) は、広瀬雄二氏による Emacs 用の LaTeX メジャーモードです。国際的には AUCTeX が広く使われますが、国内では YaTeX の利用が根強く、日本語の解説も豊富です。最新は 1.84(2025 年 2 月)。MELPA から M-x package-install RET yatex RET で入ります(手動なら site-lisp に置いて load-path を通す方法もあります)。

設計思想は AUCTeX とやや異なり、「打ち始めの数文字+補完」で命令や環境を素早く挿入する ことに重きがあります。プレフィックスは既定で C-c。**C-c b** は begin 型補完(\begin{...}...\end{...} の環境)、**C-c s** は section 型補完(\section など)、**C-c l** は large 型補完(\large など文字サイズ・書体)、**C-c m** は maketitle 型補完(\maketitle\item など引数を取らない命令群)。タイプセットは **C-c C-t** 始まりで、C-c C-t j で組版、C-c C-t p でプレビュー(ビューア起動)です。

日本語まわりの設定で要となる変数がいくつかあります。YaTeX-kanji-code は保存時の漢字コードで、現在は UTF-8 が普通なので、ファイルの符号化を勝手に変えたくなければ nil(既定エンコーディングを尊重)にします。tex-command は実際に呼ぶ組版コマンドで、"latexmk""lualatex -synctex=1""uplatex" などを指定。bibtex-commandmakeindex-commandupbibtexupmendex にしておくと和文の文献・索引が通ります。次は最小の init.el 例です。

init.el
(use-package yatex
  :ensure t                       ; from MELPA
  :mode ("\\.tex\\'" . yatex-mode)
  :config
  (setq YaTeX-kanji-code nil      ; keep the file's own encoding (UTF-8)
        tex-command "latexmk"     ; or "lualatex -synctex=1", "uplatex"
        bibtex-command "upbibtex"
        makeindex-command "upmendex"
        ;; Use C-c C-t style prefixes (C-c C-t j, C-c C-t p, ...).
        YaTeX-inhibit-prefix-letter t))

YaTeX-inhibit-prefix-lettert にすると、タイプセット系のキーが C-c t ... ではなく **C-c C-t ...(Emacs らしい修飾キー押しっぱなしの流儀)になります。なお YaTeX には HTML 用の姉妹モード yahtml も付属します。AUCTeX と YaTeX は併用より どちらかに寄せる** のが素直で、英語中心や preview-latex/RefTeX の機能をフルに使いたいなら AUCTeX、日本語の文書を素早く書きたいなら YaTeX、と選ぶとよいでしょう。