最終更新:2018-04-01 (日) 01:48:32 (84d)

Emacs > AUCTeX

AUCTeX is an extensible package for writing and formatting TeX files in GNU Emacs and XEmacs. It supports many different TeX macro packages, including AMS-TeX, LaTeX, Texinfo, ConTeXt, and docTeX (dtx files).

Emacs 用の TeX, LaTeX, ConTeXt 入力支援環境.
コマンド補完などの機能を持つ.



Download

latest

mirror

Installing AUCTeX

Emacs package manager

M-x package-install RET auctex RET

あるいは

M-x list-packages RET でリストを表示して auctex を選択

Build AUCTeX

Repository

GNU AUCTeX

ELPA

Changelog

AUCTeX manual

GNU AUCTeX

ELPA

Issues

Emacs > AUCTeX

AUCTeX



AUCTeX とは

AUCTeX は Emacs の LaTeX, TeX, ConTeXt 用のメジャーモードです.

License

GPLv3

リリース情報

を参照.

ChangeLog?

スクリーンショット

公式のスクリーンショットのページを参照.

日本語利用のための engine 設定

AUCTeX でサポートされている日本語用 TeX は ASCII pTeX, NTT jTeX, upTeX*1 の3種類です。タイプセット時にどのコマンドを使うかは、変数 TeX-engine に3つのうちどれがセットされているかで決まります。*2

通常の LaTeX ユーザーは、カスタマイズオプション TeX-parse-self を有効にしておくのがおすすめです。クラスファイルやそのオプション引数から、TeX-engine が自動でセットされます。*3*4

期待と異なる engine が使われている場合は、Command メニューのサブメニューの TeXing Options から engine を変更できます。この engine の値は emacs を終了するとき保存されません。選択した engine をずっと使い続けるやり方は、以下の2通りがあります。

  1. 特定の engine をどの文書でも使う場合
    カスタマイズオプション japanese-TeX-engine-default を設定します。
    M-x customize-option RET japanese-TeX-engine-default RET
    として Customize インターフェースを使ってもいいし、~/.emacs.d/init.el 等の初期化ファイルで
    (setq japanese-TeX-engine-default 'uptex) ;; upTeX を標準に
    のようにしても構いません。
  2. 個別のファイルごとに engine を設定する場合
    file local variable を使います。例えば、upTeX を使う場合は
    %%% Local Variables:
    %%% mode: japanese-latex
    %%% TeX-engine: uptex
    %%% End:
    のようにします。*5

上記どちらの場合も、TeX-engine に指定する値は ptex, jtex, uptex のいずれかです。

各 engine ごとに利用されるコマンド名(platex や euptex 等)は変数 TeX-engine-alist-builtin に保存されています。異なるコマンドを使いたい場合や、新たな engine を定義したい場合はカスタマイズオプション TeX-engine-alist を利用してください。

forum:2047のように、NTT jLaTeX 用のクラスファイルを ASCII pLaTeX で利用する場合は、上述の file (directory) local variable で TeX-engine に ptex を指定してください。

注意点

" を入力しようとすると `` が入力される

AUCTeX, TeX mode, YaTeX では " を入力しようとすると `` が入力されます. `` ではなく " を入力したい場合は ""(" を2回打つ)か C-q " (Ctrl-Q を入力した後で " を入力) とします.

不具合

インストール

Emacs 標準のパッケージ管理システムを使用する場合

M-x package-install RET auctex RET

または

M-x list-packages RET でリストを表示して auctex を選択

ソースコードからインストールする場合 (Linux)

$ wget http://git.savannah.gnu.org/cgit/auctex.git/snapshot/master.tar.gz

または

$ curl -LO http://git.savannah.gnu.org/cgit/auctex.git/snapshot/master.tar.gz

で最新版の AUCTeX を入手します.

AUCTeX を展開してビルド・インストールします.

$ tar xvf master.tar.gz
$ pushd master
$ ./autogen.sh
$ ./configure --prefix=/usr
$ make
$ sudo make install
$ popd

デフォルトでは preview-latex もインストールされます。

load-path に追加して自動ロードする場合は以下を ~/.emacs.d/init.el に記述します.

(add-to-list 'load-path "/usr/share/emacs/site-lisp")
(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)

Windows

Emacs を起動して

C-x C-f ~/

で,ホームディレクトリ (~/) の場所を確認します.

Windows での設定例

~/.emacs.d/init.el に設定を記述します.

SumatraPDF を -forward-search <texfile> <linenumber> オプションを使用して実行した場合 SumatraPDF を前面に表示して forward search します.

SumatraPDF を前面に表示したくない場合は SumatraPDF/fwdsumatrapdf の fwdsumatrapdf.exe を使用します.

SumatraPDF の inverse search については Emacs#SumatraPDF との連携#inverse search を参照してください.


;;
;; AUCTeX
;;
(with-eval-after-load 'tex-jp
  (dolist (command '("pTeX" "pLaTeX" "pBibTeX" "jTeX" "jLaTeX" "jBibTeX" "Mendex"))
    (delq (assoc command TeX-command-list) TeX-command-list)))
(setq japanese-TeX-engine-default 'uptex)
(setq japanese-LaTeX-default-style "bxjsarticle")
(setq TeX-engine 'uptex)
(setq TeX-PDF-from-DVI "Dvipdfmx")
(setenv "Path" (concat "C:\\Program Files\\SumatraPDF;" (getenv "Path")))
(setq exec-path (append exec-path '("C:\\Program Files\\SumatraPDF")))
(setq TeX-view-program-selection '((output-pdf "SumatraPDF")))
(setq TeX-source-correlate-method 'synctex)
(setq TeX-source-correlate-start-server t)
(setq TeX-source-correlate-mode t)
(add-hook 'LaTeX-mode-hook 'japanese-latex-mode)
(with-eval-after-load 'tex-jp
  (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode))
(add-hook 'LaTeX-mode-hook
          (function (lambda ()
                      (add-to-list 'TeX-command-list
                                   '("Latexmk"
                                     "latexmk %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-upLaTeX-pdfdvi"
                                     "latexmk -e \"$latex=q/uplatex %%O -kanji=utf8 -no-guess-input-enc %(file-line-error) %(extraopts) %S %(mode) %%S/\" -e \"$bibtex=q/upbibtex %%O %%B/\" -e \"$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/\" -e \"$makeindex=q/upmendex %%O -o %%D %%S/\" -e \"$dvipdf=q/dvipdfmx %%O -o %%D %%S/\" -norc -gg -pdfdvi %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-upLaTeX-pdfdvi"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-upLaTeX-pdfps"
                                     "latexmk -e \"$latex=q/uplatex %%O -kanji=utf8 -no-guess-input-enc %(file-line-error) %(extraopts) %S %(mode) %%S/\" -e \"$bibtex=q/upbibtex %%O %%B/\" -e \"$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/\" -e \"$makeindex=q/upmendex %%O -o %%D %%S/\" -e \"$dvips=q/dvips %%O -z -f %%S | convbkmk -u > %%D/\" -e \"$ps2pdf=q/ps2pdf.exe %%O %%S %%D/\" -norc -gg -pdfps %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-upLaTeX-pdfps"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-pdfLaTeX"
                                     "latexmk -e \"$pdflatex=q/pdflatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/\" -e \"$bibtex=q/bibtex %%O %%B/\" -e \"$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/\" -e \"$makeindex=q/makeindex %%O -o %%D %%S/\" -norc -gg -pdf %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-pdfLaTeX"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-LuaLaTeX"
                                     "latexmk -e \"$lualatex=q/lualatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/\" -e \"$bibtex=q/upbibtex %%O %%B/\" -e \"$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/\" -e \"$makeindex=q/upmendex %%O -o %%D %%S/\" -norc -gg -pdflua %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-LuaLaTeX"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-LuaJITLaTeX"
                                     "latexmk -e \"$lualatex=q/luajitlatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/\" -e \"$bibtex=q/upbibtex %%O %%B/\" -e \"$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/\" -e \"$makeindex=q/upmendex %%O -o %%D %%S/\" -norc -gg -pdflua %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-LuaJITLaTeX"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-XeLaTeX"
                                     "latexmk -e \"$xelatex=q/xelatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/\" -e \"$bibtex=q/upbibtex %%O %%B/\" -e \"$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/\" -e \"$makeindex=q/upmendex %%O -o %%D %%S/\" -norc -gg -pdfxe %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-XeLaTeX"))
                      (add-to-list 'TeX-command-list
                                   '("SumatraPDF"
                                     "powershell -Command \"& {$r = Write-Output %o;$t = Write-Output %b;$o = [System.String]::Concat('\"\"\"',[System.IO.Path]::GetFileNameWithoutExtension($r),'.pdf','\"\"\"');$b = [System.String]::Concat('\"\"\"',[System.IO.Path]::GetFileNameWithoutExtension($t),'.tex','\"\"\"');Start-Process SumatraPDF -ArgumentList ('-reuse-instance',$o,'-forward-search',$b,%n)}\""
                                     TeX-run-discard-or-function t t :help "Forward search with SumatraPDF"))
                      (add-to-list 'TeX-command-list
                                   '("fwdsumatrapdf"
                                     "fwdsumatrapdf %s.pdf \"%b\" %n"
                                     TeX-run-discard-or-function t t :help "Forward search with SumatraPDF"))
                      (add-to-list 'TeX-command-list
                                   '("TeXworks"
                                     "synctex view -i \"%n:0:%b\" -o %s.pdf -x \"texworks --position=%%{page+1} %%{output}\""
                                     TeX-run-discard-or-function t t :help "Forward search with TeXworks"))
                      (add-to-list 'TeX-command-list
                                   '("TeXstudio"
                                     "synctex view -i \"%n:0:%b\" -o %s.pdf -x \"texstudio --pdf-viewer-only --page %%{page+1} %%{output}\""
                                     TeX-run-discard-or-function t t :help "Forward search with TeXstudio"))
                      (add-to-list 'TeX-command-list
                                   '("Firefox"
                                     "powershell -Command \"& {$r = Write-Output %o;$o = [System.String]::Concat('\"\"\"',[System.IO.Path]::GetFileNameWithoutExtension($r),'.pdf','\"\"\"');Start-Process firefox -ArgumentList ('-new-window',$o)}\""
                                     TeX-run-discard-or-function t t :help "Run Mozilla Firefox"))
                      (add-to-list 'TeX-command-list
                                   '("Chrome"
                                     "powershell -Command \"& {$r = Write-Output %s.pdf;$o = [System.String]::Concat('\"\"\"',[System.IO.Path]::GetFullPath($r),'\"\"\"');Start-Process chrome -ArgumentList ('--new-window',$o)}\""
                                     TeX-run-discard-or-function t t :help "Run Google Chrome"))
                      (add-to-list 'TeX-command-list
                                   '("Edge"
                                     "powershell -Command \"& {Get-Process -Name MicrosoftEdgeCP 2>$null;if($?){for($i=0;$i -lt 3;$i++){Stop-Process -Name MicrosoftEdgeCP;Start-Sleep -Seconds 1}};Start-Process shell:AppsFolder\\Microsoft.MicrosoftEdge_8wekyb3d8bbwe!MicrosoftEdge (Get-Item \"\"\"%s.pdf\"\"\").FullName}\""
                                     TeX-run-discard-or-function t t :help "Run Microsoft Edge"))
                      (add-to-list 'TeX-command-list
                                   '("acroread"
                                     "powershell -Command \"& {Get-Process -Name AcroRd32 2>$null;if($?){Stop-Process -Name AcroRd32};Start-Process synctex -ArgumentList ('view', '-i', '\"\"\"%n:0:%b\"\"\"', '-o', '\"\"\"%s.pdf\"\"\"', '-x', '\"\"\"rundll32 shell32,ShellExec_RunDLL AcroRd32 /A ''page=%%{page+1}'' ''%%{output}''\"\"\"')}\""
                                     TeX-run-discard-or-function t t :help "Forward search with Adobe Acrobat Reader DC")))))

;;
;; RefTeX with AUCTeX
;;
(with-eval-after-load 'tex-jp
  (add-hook 'LaTeX-mode-hook 'turn-on-reftex))
(setq reftex-plug-into-AUCTeX t)

メニュー [Command]入力機能
LatexmkC-c C-c latexmk RETタイプセット (Latexmk)
Latexmk-upLaTeX-pdfdviC-c C-c latexmk-uplatex-pdfdvi RETタイプセット (Latexmk-upLaTeX-pdfdvi)
Latexmk-upLaTeX-pdfpsC-c C-c latexmk-uplatex-pdfps RETタイプセット (Latexmk-upLaTeX-pdfps)
Latexmk-pdfLaTeXC-c C-c latexmk-pdflatex RETタイプセット (Latexmk-pdfLaTeX)
Latexmk-LuaLaTeXC-c C-c latexmk-lualatex RETタイプセット (Latexmk-LuaLaTeX)
Latexmk-LuaJITLaTeXC-c C-c latexmk-luajitlatex RETタイプセット (Latexmk-LuaJITLaTeX)
Latexmk-XeLaTeXC-c C-c latexmk-xelatex RETタイプセット (Latexmk-XeLaTeX)
SumatraPDFC-c C-c sumatrapdf RETSumatraPDF で forward search
fwdsumatrapdfC-c C-c fwdsumatrapdf RETfwdsumatrapdf で forward search
TeXworksC-c C-c texworks RETTeXworks で forward search
TeXstudioC-c C-c texstudio RETTeXstudio で forward search
FirefoxC-c C-c firefox RETFirefox でプレビュー
ChromeC-c C-c chrome RETChrome でプレビュー
EdgeC-c C-c edge RETEdge でプレビュー
acroreadC-c C-c acroread RETAdobe Acrobat Reader DC で forward search

macOS

Emacs を起動して

C-x C-f ~/

で,ホームディレクトリ (~/) の場所を確認します.

macOS での設定例

動作未確認です.

~/.emacs.d/init.el に設定を記述します.


;;
;; PATH
;;
(setenv "PATH" "/usr/local/bin:/Library/TeX/texbin/:/Applications/Skim.app/Contents/SharedSupport:$PATH" t)
(setq exec-path (append '("/usr/local/bin" "/Library/TeX/texbin" "/Applications/Skim.app/Contents/SharedSupport") exec-path))

;;
;; AUCTeX
;;
(with-eval-after-load 'tex-jp
  (dolist (command '("pTeX" "pLaTeX" "pBibTeX" "jTeX" "jLaTeX" "jBibTeX" "Mendex"))
    (delq (assoc command TeX-command-list) TeX-command-list)))
(setq japanese-TeX-engine-default 'uptex)
(setq japanese-LaTeX-default-style "bxjsarticle")
(setq TeX-engine 'uptex)
(setq TeX-PDF-from-DVI "Dvipdfmx")
(setq TeX-view-program-selection '((output-pdf "displayline")))
(setq TeX-source-correlate-method 'synctex)
(setq TeX-source-correlate-start-server t)
(setq TeX-source-correlate-mode t)
(add-hook 'LaTeX-mode-hook 'japanese-latex-mode)
(with-eval-after-load 'tex-jp
  (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode))
(add-hook 'LaTeX-mode-hook
          (function (lambda ()
                      (add-to-list 'TeX-command-list
                                   '("Latexmk"
                                     "latexmk %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-upLaTeX-pdfdvi"
                                     "latexmk -e '$latex=q/uplatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -e '$dvipdf=q/dvipdfmx %%O -o %%D %%S/' -norc -gg -pdfdvi %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-upLaTeX-pdfdvi"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-upLaTeX-pdfps"
                                     "latexmk -e '$latex=q/uplatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -e '$dvips=q/dvips %%O -z -f %%S | convbkmk -u > %%D/' -e '$ps2pdf=q/ps2pdf %%O %%S %%D/' -norc -gg -pdfps %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-upLaTeX-pdfps"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-pdfLaTeX"
                                     "latexmk -e '$pdflatex=q/pdflatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/bibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/makeindex %%O -o %%D %%S/' -norc -gg -pdf %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-pdfLaTeX"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-LuaLaTeX"
                                     "latexmk -e '$lualatex=q/lualatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -norc -gg -pdflua %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-LuaLaTeX"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-LuaJITLaTeX"
                                     "latexmk -e '$lualatex=q/luajitlatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -norc -gg -pdflua %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-LuaJITLaTeX"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-XeLaTeX"
                                     "latexmk -e '$xelatex=q/xelatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -norc -gg -pdfxe %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-XeLaTeX"))
                      (add-to-list 'TeX-command-list
                                   '("displayline"
                                     "/Applications/Skim.app/Contents/SharedSupport/displayline %n %s.pdf \"%b\""
                                     TeX-run-discard-or-function t t :help "Forward search with Skim"))
                      (add-to-list 'TeX-command-list
                                   '("Skim"
                                     "open -a Skim %s.pdf"
                                     TeX-run-discard-or-function t t :help "Run Skim"))
                      (add-to-list 'TeX-command-list
                                   '("Preview"
                                     "open -a Preview %s.pdf"
                                     TeX-run-discard-or-function t t :help "Run Preview"))
                      (add-to-list 'TeX-command-list
                                   '("TeXShop"
                                     "open -a TeXShop %s.pdf"
                                     TeX-run-discard-or-function t t :help "Run TeXShop"))
                      (add-to-list 'TeX-command-list
                                   '("TeXworks"
                                     "synctex view -i \"%n:0:%b\" -o %s.pdf -x \"/Applications/TeXworks.app/Contents/MacOS/TeXworks --position=%%{page+1} %%{output}\""
                                     TeX-run-discard-or-function t t :help "Run TeXworks"))
                      (add-to-list 'TeX-command-list
                                   '("TeXstudio"
                                     "synctex view -i \"%n:0:%b\" -o %s.pdf -x \"/Applications/texstudio.app/Contents/MacOS/texstudio --pdf-viewer-only --page %%{page+1} %%{output}\""
                                     TeX-run-discard-or-function t t :help "Run TeXstudio"))
                      (add-to-list 'TeX-command-list
                                   '("Firefox"
                                     "open -a Firefox %s.pdf"
                                     TeX-run-discard-or-function t t :help "Run Mozilla Firefox"))
                      (add-to-list 'TeX-command-list
                                   '("acroread"
                                     "open -a \"Adobe Acrobat Reader DC\" %s.pdf"
                                     TeX-run-discard-or-function t t :help "Run Adobe Acrobat Reader DC")))))

;;
;; RefTeX with AUCTeX
;;
(with-eval-after-load 'tex-jp
  (add-hook 'LaTeX-mode-hook 'turn-on-reftex))
(setq reftex-plug-into-AUCTeX t)

メニュー [Command]入力機能
LatexmkC-c C-c latexmk RETタイプセット (Latexmk)
Latexmk-upLaTeX-pdfdviC-c C-c latexmk-uplatex-pdfdvi RETタイプセット (Latexmk-upLaTeX-pdfdvi)
Latexmk-upLaTeX-pdfpsC-c C-c latexmk-uplatex-pdfps RETタイプセット (Latexmk-upLaTeX-pdfps)
Latexmk-pdfLaTeXC-c C-c latexmk-pdflatex RETタイプセット (Latexmk-pdfLaTeX)
Latexmk-LuaLaTeXC-c C-c latexmk-lualatex RETタイプセット (Latexmk-LuaLaTeX)
Latexmk-LuaJITLaTeXC-c C-c latexmk-luajitlatex RETタイプセット (Latexmk-LuaJITLaTeX)
Latexmk-XeLaTeXC-c C-c latexmk-xelatex RETタイプセット (Latexmk-XeLaTeX)
displaylineC-c C-c displayline RETdisplayline で forward search
SkimC-c C-c skim RETSkim でプレビュー
PreviewC-c C-c preview RETPreview でプレビュー
TeXShopC-c C-c texshop RETTeXShop でプレビュー
TeXworksC-c C-c texworks RETTeXworks で forward search
TeXstudioC-c C-c texstudio RETTeXstudio で forward search
FirefoxC-c C-c firefox RETFirefox でプレビュー
acroreadC-c C-c acroread RETAdobe Acrobat Reader DC でプレビュー

Linux

Emacs を起動して

C-x C-f ~/

で,ホームディレクトリ (~/) の場所を確認します.

Linux での設定例

~/.emacs.d/init.el に設定を記述します.

fwdevince は Evince/fwdevince の fwdevince を使用します.


;;
;; AUCTeX
;;
(with-eval-after-load 'tex-jp
  (dolist (command '("pTeX" "pLaTeX" "pBibTeX" "jTeX" "jLaTeX" "jBibTeX" "Mendex"))
    (delq (assoc command TeX-command-list) TeX-command-list)))
(setq japanese-TeX-engine-default 'uptex)
(setq japanese-LaTeX-default-style "bxjsarticle")
(setq TeX-engine 'uptex)
(setq TeX-PDF-from-DVI "Dvipdfmx")
(setq TeX-view-program-selection '((output-pdf "Evince")))
(setq TeX-source-correlate-method 'synctex)
(setq TeX-source-correlate-start-server t)
(setq TeX-source-correlate-mode t)
(add-hook 'LaTeX-mode-hook 'japanese-latex-mode)
(with-eval-after-load 'tex-jp
  (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode))
(add-hook 'LaTeX-mode-hook
          (function (lambda ()
                      (add-to-list 'TeX-command-list
                                   '("Latexmk"
                                     "latexmk %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-upLaTeX-pdfdvi"
                                     "latexmk -e '$latex=q/uplatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -e '$dvipdf=q/dvipdfmx %%O -o %%D %%S/' -norc -gg -pdfdvi %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-upLaTeX-pdfdvi"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-upLaTeX-pdfps"
                                     "latexmk -e '$latex=q/uplatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -e '$dvips=q/dvips %%O -z -f %%S | convbkmk -u > %%D/' -e '$ps2pdf=q/ps2pdf %%O %%S %%D/' -norc -gg -pdfps %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-upLaTeX-pdfps"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-pdfLaTeX"
                                     "latexmk -e '$pdflatex=q/pdflatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/bibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/makeindex %%O -o %%D %%S/' -norc -gg -pdf %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-pdfLaTeX"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-LuaLaTeX"
                                     "latexmk -e '$lualatex=q/lualatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -norc -gg -pdflua %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-LuaLaTeX"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-LuaJITLaTeX"
                                     "latexmk -e '$lualatex=q/luajitlatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -norc -gg -pdflua %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-LuaJITLaTeX"))
                      (add-to-list 'TeX-command-list
                                   '("Latexmk-XeLaTeX"
                                     "latexmk -e '$xelatex=q/xelatex %%O %(file-line-error) %(extraopts) %S %(mode) %%S/' -e '$bibtex=q/upbibtex %%O %%B/' -e '$biber=q/biber %%O --bblencoding=utf8 -u -U --output_safechars %%B/' -e '$makeindex=q/upmendex %%O -o %%D %%S/' -norc -gg -pdfxe %t"
                                     TeX-run-TeX nil (latex-mode) :help "Run Latexmk-XeLaTeX"))
                      (add-to-list 'TeX-command-list
                                   '("xdg-open"
                                     "xdg-open %s.pdf"
                                     TeX-run-discard-or-function t t :help "Run xdg-open"))
                      (add-to-list 'TeX-command-list
                                   '("Evince"
                                     ;"synctex view -i \"%n:0:%b\" -o %s.pdf -x \"evince -i %%{page+1} %%{output}\""
                                     "TeX-evince-sync-view"
                                     TeX-run-discard-or-function t t :help "Forward search with Evince"))
                      (add-to-list 'TeX-command-list
                                   '("fwdevince"
                                     "fwdevince %s.pdf %n \"%b\""
                                     TeX-run-discard-or-function t t :help "Forward search with Evince"))
                      (add-to-list 'TeX-command-list
                                   '("Okular"
                                     "okular --unique \"file:\"%s.pdf\"#src:%n %a\""
                                     TeX-run-discard-or-function t t :help "Forward search with Okular"))
                      (add-to-list 'TeX-command-list
                                   '("zathura"
                                     "zathura -x \"emacsclient --no-wait +%%{line} %%{input}\" --synctex-forward \"%n:0:%b\" %s.pdf"
                                     TeX-run-discard-or-function t t :help "Forward and inverse search with zathura"))
                      (add-to-list 'TeX-command-list
                                   '("qpdfview"
                                     "qpdfview --unique \"\"%s.pdf\"#src:%b:%n:0\""
                                     TeX-run-discard-or-function t t :help "Forward search with qpdfview"))
                      (add-to-list 'TeX-command-list
                                   '("TeXworks"
                                     "synctex view -i \"%n:0:%b\" -o %s.pdf -x \"texworks --position=%%{page+1} %%{output}\""
                                     TeX-run-discard-or-function t t :help "Forward search with TeXworks"))
                      (add-to-list 'TeX-command-list
                                   '("TeXstudio"
                                     "synctex view -i \"%n:0:%b\" -o %s.pdf -x \"texstudio --pdf-viewer-only --page %%{page+1} %%{output}\""
                                     TeX-run-discard-or-function t t :help "Forward search with TeXstudio"))
                      (add-to-list 'TeX-command-list
                                   '("MuPDF"
                                     "mupdf %s.pdf"
                                     TeX-run-discard-or-function t t :help "Run MuPDF"))
                      (add-to-list 'TeX-command-list
                                   '("Firefox"
                                     "firefox -new-window %s.pdf"
                                     TeX-run-discard-or-function t t :help "Run Mozilla Firefox"))
                      (add-to-list 'TeX-command-list
                                   '("Chromium"
                                     "chromium --new-window %s.pdf"
                                     TeX-run-discard-or-function t t :help "Run Chromium"))
                      (add-to-list 'TeX-command-list
                                   '("acroread"
                                     "wine cmd /c start AcroRd32.exe %s.pdf"
                                     TeX-run-discard-or-function t t :help "Run Adobe Acrobat Reader DC")))))

;;
;; RefTeX with AUCTeX
;;
(with-eval-after-load 'tex-jp
  (add-hook 'LaTeX-mode-hook 'turn-on-reftex))
(setq reftex-plug-into-AUCTeX t)

メニュー [Command]入力機能
LatexmkC-c C-c latexmk RETタイプセット (Latexmk)
Latexmk-upLaTeX-pdfdviC-c C-c latexmk-uplatex-pdfdvi RETタイプセット (Latexmk-upLaTeX-pdfdvi)
Latexmk-upLaTeX-pdfpsC-c C-c latexmk-uplatex-pdfps RETタイプセット (Latexmk-upLaTeX-pdfps)
Latexmk-pdfLaTeXC-c C-c latexmk-pdflatex RETタイプセット (Latexmk-pdfLaTeX)
Latexmk-LuaLaTeXC-c C-c latexmk-lualatex RETタイプセット (Latexmk-LuaLaTeX)
Latexmk-LuaJITLaTeXC-c C-c latexmk-luajitlatex RETタイプセット (Latexmk-LuaJITLaTeX)
Latexmk-XeLaTeXC-c C-c latexmk-xelatex RETタイプセット (Latexmk-XeLaTeX)
xdg-openC-c C-c xdg-open RETxdg-open でプレビュー
EvinceC-c C-c evince RETEvince で forward search
fwdevinceC-c C-c fwdevince RETfwdevince で forward search
OkularC-c C-c okular RETOkular で forward search
zathuraC-c C-c zathura RETzathura で forward and inverse search
qpdfviewC-c C-c qpdfview RETqpdfview で forward search
TeXworksC-c C-c texworks RETTeXworks で forward search
TeXstudioC-c C-c texstudio RETTeXstudio で forward search
MuPDFC-c C-c mupdf RETMuPDF でプレビュー
FirefoxC-c C-c firefox RETFirefox でプレビュー
ChromiumC-c C-c chromium RETChromium でプレビュー
acroreadC-c C-c acroread RETAdobe Acrobat Reader DC でプレビュー

基本的な設定

自動ロード

Emacs 標準のパッケージ管理システムを使用してインストールした場合

Emacs 標準のパッケージ管理システムを使用してインストールした場合は何も記述しなくても AUCTeX が自動ロードされます.

AUCTeX が自動ロードされない場合は ~/.emacs.d/init.el に例えば次のように記述します.

(add-to-list 'load-path "~/.emacs.d/elpa/auctex-11.91.0")
(require 'tex-site)

AUCTeX の公式サイトのパッケージからインストールした場合

AUCTeX を自動ロードする場合は ~/.emacs.d/init.el に次のように記述します.

(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)

TeX エンジンと dvipdfmx の設定

upTeX をデフォルトにして dvipdfmx を使用する場合は次のように記述します.

(setq japanese-TeX-engine-default 'uptex)
(setq TeX-engine 'uptex)
(setq TeX-PDF-from-DVI "Dvipdfmx")
(add-hook 'LaTeX-mode-hook 'japanese-latex-mode)

日本語ドキュメントクラスの設定

BXjscls の bxjsarticle を標準に設定する場合は次のように記述します.

(setq japanese-LaTeX-default-style "bxjsarticle")

PDF ビューアーの変更

PDF Viewer を変更する場合は

(setq TeX-view-program-list '(("PDFviewer" "/path/viewer %o")))
(setq TeX-view-program-selection '((output-pdf "PDFviewer")))

になります。

禁則処理

禁則処理によって行長が何文字延びてもいいかは,Emacs の kinsoku.el の kinsoku-limit で定義されています.

デフォルトでは 4 ですが,少し長くしておかないと,単語の途中で切れてしまうことがあるかもしれません.

(setq kinsoku-limit 10)

使い方

タイプセット・プレビュー

メニュー [Command]入力機能
リストから選択C-c C-cコマンドの実行
LaTeXC-c C-c latex RET指定された TeX エンジンでタイプセット
DvipdfmxC-c C-c dvipdfmx RETdvipdfmx の実行
ViewC-c C-c view RETプレビュー または forward search
BibTeXC-c C-c bibtex RETbibtex の実行
BiberC-c C-c biber RETbiber の実行
IndexC-c C-c index RETmakeindex の実行
XindyC-c C-c xindy RETtexindy の実行
CheckC-c C-c check RETlacheck の実行
ChkTeXC-c C-c chktex RETchktex の実行
SpellC-c C-c spell RETスペルチェックの実行
CleanC-c C-c clean RET中間ファイル (.log .aux etc...) の削除
Clean AllC-c C-c clean all RET中間ファイル及び dvi ps pdf の削除
Recenter Output BufferC-c C-lタイプセット処理を表示
Kill JobC-c C-kタイプセット処理を中断
Next ErrorC-c `エラー行にジャンプ
Quick ViewC-c C-vクイックビュー
Compile and viewC-c C-aタイプセットとプレビュー または forward search

TeX エンジンの選択

メニュー [Command]入力TeX エンジンの選択
TeXing Options -> Use Default engineM-x TeX-engine RET default RETデフォルト (pdfTeX) を使用
TeXing Options -> Use LuaTeX engineM-x TeX-engine RET luatex RETLuaTeX を使用
TeXing Options -> Use upTeX engineM-x TeX-engine RET uptex RETupTeX を使用
TeXing Options -> Use XeTeX engineM-x TeX-engine RET xetex RETXeTeX を使用

TeX-PDF-mode

TeX-PDF-mode を有効にすると Default (pdfTeX) エンジン, LuaTeX エンジン, XeTeX エンジン で DVI ファイルのかわりに PDF ファイルを出力するようになります.

AUCTeX は TeX-PDF-mode がデフォルトで有効になっています.

メニュー [Command]入力機能
TeXing Options -> Generate PDFC-c C-t C-pTeX-PDF-mode を有効 ←→ 無効

TeX-interactive-mode

TeX-interactive-mode を有効にするとエラーが発生した場合にユーザーからの応答を待つようになります.

(add-hook 'LaTeX-mode-hook 'TeX-interactive-mode)
メニュー [Command]入力機能
TeXing Options -> Run InteractivelyC-c C-t C-iTeX-interactive-mode を有効 ←→ 無効

TeX-source-correlate-mode

TeX-source-correlate-mode を有効にすると SyncTeX が使用可能になります.

(setq TeX-source-correlate-method 'synctex)
(setq TeX-source-correlate-start-server t)
(setq TeX-source-correlate-mode t)
メニュー [Command]入力機能
TeXing Options -> Correlate I/OC-c C-t C-sTeX-source-correlate-mode を有効 ←→ 無効

補完

メニュー [LaTeX]入力補完
Insert Environment (C-c C-e) -> リストから選択C-c C-e\begin{...} ... \end{...} の補完
Section (C-c C-s) -> リストから選択C-c C-s\chapter, \section などの補完

簡単な使い方

拡張子が tex のファイルを開くと自動的に立ち上がります。

下の「複数ファイルの文書」にも別の方法を説明しました。

まず C-c C-e すると,\documentclass{...} およびトップレベルの環境 \begin{document} ... \end{document} が入ります。

次に C-c C-s すると,\section の類のコマンドが入ります。

コマンド名は補完できます。

次に C-c C-e すると,\begin{...} ... \end{...} のような環境が入ります。 環境名は補完できます。

次に C-c C-c するとコンパイルできます。

次に C-c C-c すると依存関係を調べて出力ファイルが新しければ dvipdfmx を実行したりプレビューしたりします。

dvipdfmx が実行された場合は次に C-c C-c するとプレビューします。

再度コンパイルしたいのなら C-c C-c の後に l (小文字の L) をタイプした後で TAB (Tab キー) あるいは C-c C-c の後に l (小文字の L) をタイプした後で SPACE (Space キー) を打てば LaTeX の文字が補完されて RET (Enter キー) を押すと LaTeX の処理が行われます。

C-c C-a するとタイプセットからプレビューまでを一気に行います。

いろいろな使い方

ダブルクォート " を打てば,状況に応じて `` または '' に変換してくれます。

TAB または SPACE で補完ができます。

これらが効かないときは ESC TAB で補完します。

候補一覧が出たら,さらに文字を補って補完するか, あるいはマウスの中央のボタンで候補をクリックします。

フォント関係のコマンドです。

メニュー [LaTeX]入力補完補完 (数式モード)
Insert Font -> RomanC-c C-f C-r\textrm{}\mathrm{}
Insert Font -> ItalicC-c C-f C-i\textit{}\mathit{}
Insert Font -> TypewriterC-c C-f C-t\texttt{}\mathtt{}
Insert Font -> BoldC-c C-f C-b\textbf{}\mathbf{}
Insert Font -> Sans SerifC-c C-f C-f\textsf{}\mathsf{}

その他のコマンドです。

  • TAB インデント
  • C-j インデントして改行
  • M-q 段落の整形
  • M-x LaTeX-fill-buffer バッファ全体の整形
  • C-c ; 領域のコメント
  • C-c : 領域のコメントを外す
  • C-c C-r 領域のコンパイル/プレビュー
  • C-c ` エラー行に飛ぶ(日本語でエラーメッセージを表示)

AUCTeX Clean ターゲット機能

  • C-c C-c Clean 中間ファイル(.log .aux etc...)の削除
  • C-c C-c Clean All 中間ファイル及び dvi ps pdf の削除

これ以外にたくさんの機能があります。 ぜひ info auctex でドキュメントをお読みください。

カスタマイズ

サイトごとのカスタマイズは /usr/local/share/emacs/site-lisp/tex-site.el で行います。

複数ファイルの文書

たとえば hogehoge.tex から input または include されているファイルでは,次のように書いておきます。

%%% Local Variables:
%%% mode: japanese-latex
%%% TeX-engine: uptex
%%% TeX-master: "hogehoge"
%%% End:

すると,このバッファで C-c C-c すると,hogehoge.tex をコンパイルしたり hogehoge.dvi を表示したりします。 これはこのファイルを japanese-latex モードで開くという便利な副作用もあります。

もし自分自身がマスターなら,次のように書いておきます。

%%% Local Variables:
%%% mode: japanese-latex
%%% TeX-engine: uptex
%%% TeX-master: t
%%% End:

こういったものを自動で入れたい場合は,Emacs の設定ファイルに次のように書いておきます(私は書いていません)。

(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)

こうしておくと,ファイルを開くときに

Master file: (default this file)

と聞いてきますので,自分自身がマスターファイルなら単に Enter を押します。

キャンセルは C-g です。

SumatraPDF との連携 (forward and inverse search)

forward search は AUCTeX#インストール#Windows#設定? を参照してください.

C-c C-c sumatrapdf または C-c C-c fwdsumatrapdf で forward search ができます.

AUCTeX は SumatraPDF の forward search に対応しています.

環境変数 Path と変数 exec-path に SumatraPDF のコマンド検索パスを追加します.

TeX-view-program-selection の output-pdf に TeX-view-program-list-builtin で設定されている SumatraPDF を指定します.

(setenv "Path" (concat "C:\\Program Files\\SumatraPDF;" (getenv "Path")))
(setq exec-path (append exec-path '("C:\\Program Files\\SumatraPDF")))
(setq TeX-view-program-selection '((output-pdf "SumatraPDF")))

C-c C-c view で View command: に SumatraPDF のコマンドが表示され forward search が実行できます.

inverse search については Emacs#SumatraPDF との連携#inverse search を参照してください.

Skim との連携 (forward and inverse search)

forward search は AUCTeX#インストール#macOS#設定? を参照してください.

C-c C-c displayline で forward search ができます.

AUCTeX は Skim の forward search に対応しています.

TeX-view-program-selection の output-pdf に TeX-view-program-list-builtin で設定されている displayline を指定します.

(setq TeX-view-program-selection '((output-pdf "displayline")))

C-c C-c view で View command: に displayline のコマンドが表示され forward search が実行できます.

inverse search は Emacs#e9c08b3d を参照してください.

AUCTeX の設定と便利な機能 | Amrta も参考になります.

Evince との連携 (forward and inverse search)

forward search は AUCTeX#インストール#Linux#設定? を参照してください.

C-c C-c fwdevince で forward search ができます.

AUCTeX は Evince の forward and inverse search に対応しています.

TeX-view-program-selection の output-pdf に TeX-view-program-list-builtin で設定されている Evince を指定します.

(setq TeX-view-program-selection '((output-pdf "Evince")))

C-c C-c view で View command: に TeX-evince-sync-view が表示され forward search が実行できます.

TeX-source-correlate-mode が有効になっていれば Ctrl + 左クリックで inverse search が実行できます.

以下のページも参考になります.

Okular との連携 (forward and inverse search)

forward search は AUCTeX#インストール#Linux#設定? を参照してください.

C-c C-c okular で forward search ができます.

AUCTeX は Okular の forward search に対応しています.

TeX-view-program-selection の output-pdf に TeX-view-program-list-builtin で設定されている Okular を指定します.

(setq TeX-view-program-selection '((output-pdf "Okular")))

C-c C-c view で View command: に Okular のコマンドが表示され forward search が実行できます.

inverse search は Emacs#z0944532 を参照してください.

zathura との連携 (forward and inverse search)

forward and inverse search は AUCTeX#インストール#Linux#設定? を参照してください.

C-c C-c zathura で forward and inverse search ができます.

AUCTeX は zathura の forward and inverse search に対応しています.

TeX-view-program-selection の output-pdf に TeX-view-program-list-builtin で設定されている Zathura を指定します.

(setq TeX-view-program-selection '((output-pdf "Zathura")))

C-c C-c view で View command: に zathura のコマンドが表示され forward and inverse search が実行できます.

Ctrl + 左クリックで inverse search が実行できます.

その他

AUCTeX とは関係ありませんが,先頭に

% Time-stamp: <>

と書いておくと,保存したときにタイムスタンプが書き込まれます。 こうならない場合は ~/.emacs.d/init.el に次のように書いておきます。

(if (not (memq 'time-stamp write-file-hooks))
    (setq write-file-hooks
          (cons 'time-stamp write-file-hooks)))

関連リンク


*1 upLaTeX を利用したとき、何度 C-c C-c をタイプしても typeset が終わったと判定されず、Viewer の起動に移行しなかった問題は AUCTeX 11.90 で修正されました。
*2 LuaTeX-ja を利用する場合は、日本語用に特別の設定は不要です。単純に engine として LuaTeX を選び、通常の LuaTeX 文書として編集するだけでよく、この節の話は当てはまりません。
*3 文書を親ファイルと子ファイルに分割する場合は、さらに TeX-auto-save も有効にするとよいかもしれません。文書の保存時にサブディレクトリ auto 内に情報が保存されるので、次回編集を再開するとき、子ファイルだけを開いても TeX-engine が正しい値にセットされます。
*4 \documentclass[uplatex]{jsarticle} 等のように、jsclasses 系のクラスファイルに uplatex オプションを指定した場合 upTeX engine が選択されない問題は、AUCTeX 11.91 で修正されました。
*5 directory local variable も、AUCTeX 11.90 からは japanese-latex-mode, japanese-plain-tex-mode で利用できるようになりました。