Emacs で LaTeX を書く道は大きく二つあります。包括的な TeX/LaTeX 環境 AUCTeX(オークテック)と、日本語に厚い YaTeX(野鳥)。どちらもキーボード中心で、コンパイル・補完・相互参照・プレビューをエディタから直に操れます。学習曲線は急ですが、いったん手になじめば極めて速い。このページでは AUCTeX の設定、相棒の RefTeX、本文中に数式を描く preview-latex を順に見て、最後に日本語向けの YaTeX に触れます。
AUCTeX とは
Emacs 自体は TeX を組版しません。実際にコンパイルするのは、PC に入れた TeX Live(や MacTeX・MiKTeX)などのディストリビューションです。AUCTeX は、エディタとそのディストリビューションを橋渡しする拡張パッケージ。latex や latexmk を子プロセスとして起動し、エラーを拾って該当行へ飛び、環境や命令の補完、シンタックスハイライト、文書の折りたたみ、数式の入力支援までをまとめて提供します。前提は、ターミナルで 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-c は Control を押しながら c、C-c C-c は Control を押したまま c, c と続けて打つ こと、M-x は Meta(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-mode(SyncTeX)あたりをまず書きます。
次は use-package を使った実用的な init.el の例です。TeX-source-correlate-method を synctex にし、TeX-source-correlate-start-server を立てると、ビューアからソースへ戻る逆方向検索が使えます。reftex-mode と LaTeX-math-mode も LaTeX バッファで自動的に有効化しています。
;; 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-self と TeX-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-mode や TeX-source-correlate-mode の状態を引き継ぎ、PDF 出力や -synctex=1 を自動で付けてくれます。
(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-c | TeX-command-master | 次の処理を選んで実行(LaTeX→View など) |
C-c C-a | TeX-command-run-all | 完了かエラーまで一括処理し、ビューアを開く |
C-c ` | TeX-next-error | 次のエラー箇所へ移動(バッククォート) |
C-c C-e | LaTeX-environment | 環境を挿入(\begin..\end を補完) |
C-c C-m | TeX-insert-macro | 命令を名前で挿入(引数も補完) |
C-c C-f | TeX-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 はマスターファイルをたどって全ラベル・全文献を横断的に集めてくれます。
(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-command・makeindex-command を upbibtex・upmendex にしておくと和文の文献・索引が通ります。次は最小の 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-letter を t にすると、タイプセット系のキーが C-c t ... ではなく **C-c C-t ...(Emacs らしい修飾キー押しっぱなしの流儀)になります。なお YaTeX には HTML 用の姉妹モード yahtml も付属します。AUCTeX と YaTeX は併用より どちらかに寄せる** のが素直で、英語中心や preview-latex/RefTeX の機能をフルに使いたいなら AUCTeX、日本語の文書を素早く書きたいなら YaTeX、と選ぶとよいでしょう。