EmacsにおけるLaTeX執筆環境構築(1)AUCTeXの設定と使い方について

Emacs上でLaTeXを編集するときに便利なパッケージの一つとしてAUCTeXが知られている。本記事は設定と使い方を備忘録として残すのが主旨である。

TeXのインストール

TeX Wikiを参考にするとよい。Emacs上で執筆するならばscheme-small (BasicTeX)とcollection-langjapaneseをインストールするのが良いだろう。

AUCTeXのインストール

M-x package-install RET auctex RET

とするか、もしくは

M-x list-packages RET

からauctexを選択する。

設定

Emacsの設定

日本語文章の執筆を前提とする。

コードを表示する
gist.github.com

latexmkの設定

もしlatexmkを利用する場合は、.latexmkrcを設定して~/.latexmkrcなどに保存したうえで実行するのが良い。以下の.latexmkrcはdviを経由するタイプである。

uplatexを用いる場合は以下の設定を参考に。

コードを表示する

#!/usr/bin/env perl

$latex  = "uplatex -halt-on-error -interaction=nonstopmode -file-line-error %O %S";
$bibtex = 'upbibtex %O %S';
$biber = 'biber --bblencoding=utf8 -u -U --output_safechars %O %S';
$makeindex = 'mendex %O -o %D %S';
$dvipdf = 'dvipdfmx %O -o %D %S';

$pdf_mode = 3;
$max_repeat = 5;

platexを用いる場合は以下の設定を参考に。

コードを表示する

#!/usr/bin/env perl

$latex  = "platex -kanji=utf8 -halt-on-error -interaction=nonstopmode -file-line-error %O %S";
$bibtex = 'pbibtex -kanji=utf8 %O %S';
$biber = 'biber --bblencoding=utf8 -u -U --output_safechars %O %S';
$makeindex = 'mendex %O -o %D %S';
$dvipdf = 'dvipdfmx %O -o %D %S';

$pdf_mode = 3;
$max_repeat = 5;

もしtexから直接pdfを生成する場合の設定例は以下。$pdf_modeを1にすることが重要である。

コードを表示する

#!/usr/bin/env perl

# texからpdfを直接生成 (pdflatex)
$pdf_mode = 1;

$bibtex = 'upbibtex %O %S';
$makeindex = 'umendex %O -o %D %S';
$pdf_previewer = "evince %S";
$max_repeat = 5;


ただし日本語文章でpdflatexを通す場合はBXjscls パッケージなどを併用するとよい。

\documentclass[pdflatex, ja=standard]{bxjsarticle}  %ほかはa4paperなどがオプションに入る

設定の参考にしたサイト

解説と補足

AUCTeXの公式情報

ホームページは以下のサイトである。
www.gnu.org

また最新のソースコードは以下のサイトから確認できる。

AUCTeXの設定の情報源

AUCTeX Wikiに多くの情報が集約されており、まずはここに書いてある設定を参考にしながら自身の設定ファイルに追記していくのがよい。

使い方

コンパイルからPDF表示まで

AUCTeX Wikiを参考に、よく使うものをテーブルにリストする。

  • コマンド起動
入力 機能
C-c C-c コマンドの選択メニューを表示(処理対象範囲:文書全体)
C-c C-r コマンドの選択メニューを表示(処理対象範囲:リージョン)
C-c C-b コマンドの選択メニューを表示(処理対象範囲:カレントバッファ)

C-c C-cの「文書全体」とは、例えばファイル分割している場合にそれらをすべて取り込む形を指す。C-c C-bはカレントバッファ(=現在編集中のバッファ)のみが処理対象となる。

  • コマンド例(C-c C-cの場合)
メニュー 入力例 機能
LaTeX C-c C-c latex 指定された TeX エンジン (TeX-engine)でタイプセット
BibTeX C-c C-c bibtex bibtex の実行(文献データベースの更新)
Dvipdfmx C-c C-c dvipdfmx dvipdfmx の実行
View C-c C-c view プレビュー
Clean C-c C-c clean 中間ファイル (.log .aux etc...) の削除
Clean All C-c C-c clean all 中間ファイル及び dvi ps pdf の削除

上記はC-c C-c経由でコマンドを発動した場合の例である。個々のコマンドの機能はC-c C-rC-c C-bでも同じである。

  • その他
入力 機能
C-c C-v プレビューの起動(Viewのショートカット起動)
C-c C-a タイプセット、(文献DB更新、)dvipdfmx、プレビューを順に実行
C-c C-l タイプセット処理を表示

基本となるのは

1. "LaTeX"によりタイプセットコンパイル)→texソースからdviファイルを生成
2. "Dvipdfmx"によりdviからpdfを生成
3. "View"によりpdfを開く

という一連の流れである。文章中で参考文献を引用している場合は1と2の間にBibTeXが入る。

1. "LaTeX"によりタイプセット
2. "BiBTeX"により文献データベースを更新 →bibファイルからbblファイルを生成
3. "LaTeX"によりもう一度タイプセットtexソースからdviファイルを生成
4. "Dvipdfmx"によりdviからpdfを生成
5. "View"によりpdfを開く

これらはC-c C-aの一発で済むので便利である。

編集中に便利なキーバインドスニペット

以下は多用するキーバインドである。

入力 機能
C-c C-e LaTeX環境(\begin{...} \end{....})を選択的に挿入
C-c C-s セクション関係(\section{}や\subsection)を選択的に挿入
C-c ] LaTeX環境を閉じる(\end{...} をのみ挿入)
C-c ; リージョンをコメントアウト
C-c % カーソル最寄りの段落をコメントアウト
C-c * カーソルに最寄りのセクション関係をマーク
C-c . カーソルに最寄りのLaTeX環境をマーク


yasnippetユーザならば、多くのスニペットLaTeX用に提供されるので、使ってみるとよい。上記のキーバインドがあれば十分かもしれないが、どちらも便利なので併用している。

latexmkについて

latexmkを用いて PDF をコマンド一つで生成するという主旨の記事がある。同記事では"auctex-latexmk"というパッケージが件の機能を提供するものとして紹介されている。本記事で紹介している設定ではauctex-latexmk関連をコメントアウトしてある。利用はお好みで。

日本語対応のエンジンの例としてLuaTeX-jaが知られている。LuaTeX-jaを用いるとpdflatexでなくともtexからpdfを直接生成できるので便利に使える。ほか、LuaTeXを用いるメリットとして、フォント周りの設定がしやすいことが挙げられる。詳細は別の記事で紹介する予定である。

latexmkを保存と同時に走らせる場合は以下の記事で紹介した設定を追記する。

インラインプレビューについて

AUCTeXでは数式や画像のインラインプレビューが可能である。対象となる数式はpng画像に変換されてEmacs上でプレビューされる。以下は主なキーバインドである。C-c C-p(pはpreviewの意味)から始まるので比較的覚えやすい。

入力 機能
C-c C-p C-d マスタ文書のプレビュー開始
C-c C-p C-c C-d 文書全体のプレビュー終了
C-c C-p C-b カレントバッファのプレビュー開始
C-c C-p C-c C-b カレントバッファのプレビュー終了
C-c C-p C-p ポイント位置のプレビュー開始
C-c C-p C-c C-p ポイント位置のプレビュー終了
C-c C-p C-e LaTeX環境で囲まれた部分のプレビュー開始
C-c C-p C-c C-e LaTeX環境で囲まれた部分のプレビュー終了
C-c C-p C-s セクションのプレビュー開始
C-c C-p C-c C-s セクションのプレビュー終了