Emacs(AUCTeX / YaTeX)

아무 확장도 넣지 않은 GNU Emacs에서 .tex를 열면 이미 LaTeX 모드에 들어가 있습니다. lisp/textmodes/tex-mode.el로 처음부터 함께 배포되기 때문입니다. AUCTeX는 그 모드를 갈아 끼우려고 설치하는 패키지이고, 둘은 처음부터 얽혀 있습니다. AUCTeX가 바로 그 파일에서 자라났기 때문입니다. 1986년 덴마크 올보르 대학에서 누군가 Emacs의 tex-mode.el에 서체 명령과 덴마크어 문자를 넣는 함수를 더하기 시작했습니다. 이름 속 AUC는 당시 이 대학의 덴마크어 이름 Aalborg Universitetscenter의 줄임말입니다. 이 페이지에서는 AUCTeX가 내장 모드에 무엇을 더하는지, C-c C-c가 누를 때마다 다른 것을 물어보는 이유, AUCTeX의 일부가 아닌 RefTeX, 이미 쓰고 있을지도 모를 preview.stypreview-latex, 그리고 일본어권의 대안인 YaTeX(野鳥)를 차례로 살펴봅니다.

내장 LaTeX 모드와 AUCTeX — 같은 키, 다른 명령

맨 Emacs에서도 .tex를 열면 latex-mode에 들어가고, C-c C-b로 조판하고, C-c C-o\begin\end 짝을 넣고, C-c C-e로 아직 닫히지 않은 가장 안쪽 블록을 닫고, C-c C-v로 뷰어를 엽니다. 어느 모드로 들어갈지는 Emacs가 내용을 읽어 정합니다. tex-mode는 주석 안에 있지 않은 첫 백슬래시를 찾아, 그 바로 뒤가 documentclass, documentstyle, begin, section, chapter, newcommand, RequirePackage 등인지 봅니다. 맞으면 latex-mode, 아니면 plain-tex-mode로 떨어집니다. 아무것도 못 찾으면 tex-default-mode의 값을 쓰고, 그 기본값이 latex-mode입니다.

AUCTeX을 넣으면 같은 건반이 다른 악기에 연결됩니다. 키는 대체로 같은데 뒤에 붙은 명령이 다릅니다. “같은 키인데 손끝의 감각이 달라졌다”는 당혹감은 여기서 옵니다. 내장 모드의 C-c C-f는 파일 전체를 조판하는 tex-file이지만, AUCTeX의 C-c C-f는 서체 명령을 넣는 TeX-font입니다. 내장의 C-c C-e는 열린 환경을 닫는 latex-close-block이고, AUCTeX의 C-c C-e는 어떤 환경을 넣을지 묻는 LaTeX-environment입니다. 이 둘을 나란히 놓으면 차이가 스스로 말합니다. 내장 모드는 TeX을 실행할 수 있는 편집 모드이고, AUCTeX은 문서의 구조를 아는 환경입니다.

이 둘이 어떻게 공존하는가는 사실 2024년에 정리되었습니다. AUCTeX 14.0.1에서 모드 이름이 첫 글자가 대문자인 LaTeX-mode, plain-TeX-mode, docTeX-mode로 바뀌었습니다. 내장 모드와의 이름 충돌을 끝내기 위해서였습니다. 그 뒤로 .tex를 열었을 때 어느 모드로 가는지는, Emacs 29 이상이라면 major-mode-remap-alistmajor-mode-remap-defaults를 통한 전달이 정합니다. AUCTeX 쪽 창구는 이용자용 옵션 TeX-modes이며, 예컨대 plain TeX만 내장 모드에 돌려주고 LaTeX은 AUCTeX에 남길 수 있습니다. 매뉴얼은 major-mode-remap-*를 직접 건드리지 말고 TeX-modes를 커스터마이즈하라고 권합니다. 함정이 하나 있습니다. Emacs 29 이상에서 M-x latex-mode를 직접 치면 AUCTeX이 아니라 내장 모드가 뜹니다. 설정 코드가 옛 소문자 이름을 부르고 있으면 여기에 걸립니다.

AUCTeX 설치, 그리고 두 해 뒤처진 매뉴얼

AUCTeX은 GNU Emacs에 함께 들어 있지 않습니다. GNU 프로젝트의 하나로 GNU ELPA에서 패키지로 배포되며 GPL v3입니다. GNU ELPA는 Emacs 24.1부터 기본으로 켜져 있으니, 설치는 M-x list-packages에서 auctexi를 붙이고 x를 누르면 끝입니다. M-x package-install RET auctex RET도 같은 일입니다. 전제는 둘. 하나는 터미널에서 latexmk --version이 도는 것, 곧 TeX 명령이 PATH에 있는 것입니다. 조판 자체는 컴퓨터에 설치한 TeX Live나 MacTeX, MiKTeX이 맡고 Emacs은 그것을 자식 프로세스로 띄울 뿐이기 때문입니다. 다른 하나는 Emacs 자체의 버전으로, 현행 AUCTeX은 Emacs 28.1 이상을 요구합니다.

여기에 모르면 한나절을 태우는 어긋남이 하나 있습니다. GNU ELPA가 배포하는 AUCTeX과 gnu.org에 올라 있는 매뉴얼은 같은 판이 아닙니다. 2026년 8월에 확인한 시점에서 GNU ELPA의 최신은 2026년 1월 14일자 14.1.2였지만, gnu.org의 온라인 매뉴얼은 첫머리에 2024년 1월 14일의 13.3판을 기술한다고 적힌 채였습니다. 두 해 차이입니다. 웹사이트에는 새 릴리스를 알리는 페이지도 없습니다. 그러니 설정 변수나 키의 실제 동작을 알아볼 때는 손에 들어온 판의 Info 매뉴얼을 C-h i로 읽는 것이 정답입니다. 검색으로 나온 설명이 내 환경의 이야기라는 보장은 없습니다.

설정 파일 init.el(대개 ~/.emacs.d/init.el)에 가장 먼저 쓸 것은 PDF를 기본 출력으로 만드는 TeX-PDF-mode, 자동 완성이 내 문서를 알게 하는 TeX-parse-selfTeX-auto-save, 그리고 SyncTeX 대응을 켜는 TeX-source-correlate-mode입니다. TeX-parse-selfTeX-auto-save는 AUCTeX에게 문서를 읽게 해 \usepackage로 불러들인 패키지의 명령까지 후보에 넣고, 그 결과를 auto/ 디렉터리에 캐시하도록 하는 설정입니다. SyncTeX 자체의 원리는 전용 페이지에 넘기고, 여기서는 설정만 둡니다.

init.el
;; package.el reads GNU ELPA, enabled by default since Emacs 24.1.
(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))            ; backquote math shortcuts
  :config
  (setq TeX-auto-save t      ; cache parse data in the auto/ directory
        TeX-parse-self t     ; scan the file for \usepackage and friends
        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))

C-c C-c는 누를 때마다 다른 것을 물어봅니다

C-c C-c(TeX-command-master)는 “이것을 실행하라”는 명령이 아니라 “다음에 무엇을 실행할까”라는 물음입니다. 미니버퍼가 물어보며 문서의 상태에 맞는 기본값을 제안합니다. 아직 조판하지 않았으면 LaTeX, .aux를 보아 참조가 풀리지 않았으면 다시 LaTeX, 참고문헌이 있으면 BibTeX, 다 정리되었으면 View. Enter로 받아들이고 되풀이하는 것이 기본 고리이며, 이는 AUCTeX의 설계 사상을 잘 보여 줍니다. 치는 사람이 순서를 외우는 것이 아니라 문서의 상태가 다음 수를 정합니다. 단계를 지켜보고 싶지 않을 때는 C-c C-a(TeX-command-run-all)가 오류가 나거나 끝날 때까지 자동으로 이어 달리고, 성공하면 뷰어까지 열어 줍니다.

명령하는 일
C-c C-cTeX-command-master다음에 무엇을 실행할지 묻고 문서 상태에서 기본값을 제안
C-c C-aTeX-command-run-all끝나거나 오류가 날 때까지 한 번에 달리고, 성공하면 뷰어를 엽니다
C-c C-rTeX-command-region선택 영역만 조판. 긴 문서의 한 대목을 시험할 때
C-c C-zLaTeX-command-section지금 절만 조판
C-c `TeX-next-error다음 오류로 이동(C-c 다음에 백쿼트)
M-g pTeX-previous-error이전 오류로 되돌아가기. 로그 전체 해석이 필요합니다(TeX-parse-all-errors)
C-c C-lTeX-recenter-output-buffer출력 버퍼를 굴려 마지막 줄이 보이게 합니다
C-c C-kTeX-kill-job돌고 있는 외부 프로세스를 중지(TeX이든 뷰어든)
C-c C-eLaTeX-environment환경을 묻고 \begin\end를 삽입
C-c C-sLaTeX-section절 명령 삽입. RefTeX과 엮으면 라벨도 함께 붙습니다
C-c C-fTeX-font서체 명령 삽입. C-c C-f C-d로 가장 안쪽 서체 지정을 제거
C-c C-mTeX-insert-macro명령 이름을 완성해 넣고 인수를 하나씩 물음(C-c RET도 같음)
C-c ~LaTeX-math-mode백쿼트를 접두 키로 삼아 수식 기호를 입력하게 합니다
C-c C-o C-fTeX-fold-mode접기 모드 전환. C-c C-o C-b로 버퍼 전체를 접습니다

표 바깥으로 두 가지만 덧붙입니다. M-g n은 AUCTeX의 할당이 아니라 Emacs 표준의 next-error이고, AUCTeX은 이를 덮어쓰지 않습니다. 오류를 거슬러 가는 M-g p(TeX-previous-error)는 로그 전체의 해석을 전제하며, TeX-parse-all-errors는 기본값이 켜짐입니다. 또 하나, $를 치는 순간 짝으로 들어가기를 바란다면 TeX-electric-math를 설정합니다. 기본값은 nil, 곧 $는 그냥 $이고, ("$" . "$")이면 TeX식, ("\\(" . "\\)")이면 LaTeX식 인라인 수식이 됩니다.

latexmk은 이제 플러그인 없이 씁니다 — LaTeXMk은 AUCTeX 본체에 있습니다

C-c C-c가 내놓는 선택지에는 처음부터 LaTeXMk이 들어 있습니다. 2024년 5월 19일에 나온 AUCTeX 14.0.5에서 TeX-command-list에 추가된 항목이고, 이후 릴리스에서 출력 디렉터리 처리와 XeTeX 옵션이 다듬어졌습니다. 한때 표준 답안이던 외부 패키지 auctex-latexmk은 이제 넣을 필요가 없습니다. 아니, 넣지 않는 편이 낫습니다. 상류의 마지막 커밋이 2017년이라, AUCTeX 14의 모드 개명보다 훨씬 앞에서 시계가 멈춰 있습니다. 어디선가 찾은 옛 설정에서 (auctex-latexmk-setup)을 베끼기 전에, 먼저 C-c C-c를 눌러 목록을 보십시오.

latexmk을 기본 동작으로 삼으려면 TeX-command-default"LaTeXMk"로 두기만 하면 됩니다(철자에 유의하십시오. 대문자 M과 K입니다). latexmk은 의존 관계를 보고 필요한 만큼만 되풀이하므로, 상호 참조나 목차를 위해 몇 번 돌릴지 직접 셀 일이 없습니다. 엔진 선택은 AUCTeX 쪽 TeX-engine이 쥐고 있고, 기본으로 들어 있는 네 값은 default, xetex, luatex, omega입니다. LaTeXMk 항목은 이 값을 보고 latexmk에 넘길 플래그를 조립합니다. 문헌 처리와 세밀한 엔진 조정은 프로젝트 최상위의 .latexmkrc에 적는 것이 가장 깔끔하며, 그러면 Emacs 밖이나 CI에서도 같은 PDF를 재현할 수 있습니다. latexmk 설정 자체는 자동 빌드 페이지가 주인입니다.

init.el
;; AUCTeX 14.0.5 and later ship a LaTeXMk entry in TeX-command-list.
;; Note the spelling: capital M, capital K.
(setq-default TeX-command-default "LaTeXMk")

;; Engine selection stays on the AUCTeX side and is buffer-local.
;; M-x TeX-engine-set, or in a file-local variables block:
;;   %%% TeX-engine: luatex

RefTeX은 AUCTeX이 아니라 Emacs 본체에 들어 있습니다

\label\ref\cite를 돌보는 것은 RefTeX이고, 이는 AUCTeX의 일부가 아닙니다. Emacs 소스 트리의 lisp/textmodes/ 아래에 reftex.el을 비롯한 열몇 개 파일로 들어 있어 따로 설치할 것이 없습니다. 처음 실린 것은 1997년의 Emacs 20.1이며, etc/NEWS.20의 “Changes in Emacs 20.1” 절에 당시의 키 표가 그대로 실려 있습니다. C-c (, C-c ), C-c [, C-c &, C-c =——사반세기가 지난 지금도 같은 키입니다. 만든 이는 Carsten Dominik입니다. reftex.el 머리말의 메일 주소는 org.el 작성자 줄의 그것과 같습니다. 곧 Org 모드를 쓴 바로 그 사람입니다. 현재 보수는 AUCTeX 프로젝트가 맡고 있습니다.

실제로 얻는 것은 라벨을 손수 지어내지 않아도 된다는 점입니다. C-c ((reftex-label)는 지금 있는 곳이 그림인지 표인지 수식인지 절인지를 보고, fig:, tab:, eq: 같은 알맞은 접두가 붙은 라벨을 제안해 넣습니다. 참조하는 쪽은 C-c )(reftex-reference)로 기존 라벨 목록에서 고르기만 하면 됩니다. 문헌은 C-c [(reftex-citation)로 .bib를 정규식 검색해 \cite{...}를 넣습니다. C-c =(reftex-toc)는 문서 전체의 목차 버퍼를 다른 창에 열고, C-c &(reftex-view-crossref)는 커서 아래 참조가 무엇을 가리키는지 그 자리에서 보여 줍니다. 색인을 만드는 문서라면 C-c /로 선택한 낱말을 색인 항목으로 만들 수 있습니다. 여러 파일로 나뉘어 있어도 RefTeX은 마스터 파일을 따라가며 모든 라벨과 모든 문헌을 그러모읍니다.

AUCTeX과 깊이 맞물리게 하려면 reftex-plug-into-AUCTeX를 설정합니다. 참 거짓 다섯 개로 이루어진 목록이며, 절이나 환경을 새로 만들 때 라벨을 대 줄지, 그리고 \label, \ref, \cite, \index의 인수를 대 줄지를 각각 켜고 끕니다. 모두 켜려면 t를, 모두 끄려면 nil을 넣으면 됩니다. 켜 두면 C-c C-s로 절을 만드는 순간 라벨을 묻고, C-c C-m으로 \ref를 넣으면 RefTeX의 선택 버퍼가 뜹니다. 두 패키지가 하나처럼 느껴지는 것은 이 설정 덕분입니다.

init.el
(use-package reftex
  :ensure nil                 ; part of Emacs itself, nothing to fetch
  :hook (LaTeX-mode . turn-on-reftex)
  :config
  (setq reftex-plug-into-AUCTeX t    ; t turns all five flags on
        reftex-cite-format 'natbib))  ; or 'biblatex, 'default, ...

preview-latex, 그리고 이미 쓰고 있을 preview.sty

preview-latex는 수식과 그림과 tikzpicture를 LaTeX으로 실제로 조판한 뒤, 그 결과를 이미지로 소스 버퍼 위 그 자리에 얹습니다. AUCTeX 11.81에서 별도 배포를 그만두고 AUCTeX의 일부가 되었으므로 따로 설치할 것이 없습니다. $…$\[…\], equation 환경의 소스는 편집 가능한 채로 있으면서, 확인하고 싶을 때만 조판된 수식으로 보입니다. 파일은 여전히 평범한 텍스트인데 손끝의 감각은 WYSIWYG에 가깝습니다. 명령은 C-c C-p로 시작합니다. C-c C-p C-p는 커서 위치의 대상, C-c C-p C-e는 환경, C-c C-p C-s는 절, C-c C-p C-r는 선택 영역, C-c C-p C-b는 버퍼, C-c C-p C-d는 문서 전체입니다. 지울 때는 가운데에 C-c C-c를 끼웁니다. C-c C-p C-c C-p는 커서 위치의 미리보기를 지웁니다. 이미지를 mouse-2로 눌러도 전환됩니다.

init.el
;; The preview commands, by their Lisp names.
;; C-c C-p C-p   preview-at-point       C-c C-p C-c C-p  preview-clearout-at-point
;; C-c C-p C-e   preview-environment    C-c C-p C-c C-s  preview-clearout-section
;; C-c C-p C-s   preview-section        C-c C-p C-c C-b  preview-clearout-buffer
;; C-c C-p C-r   preview-region         C-c C-p C-c C-d  preview-clearout-document
;; C-c C-p C-b   preview-buffer         C-c C-p C-f      preview-cache-preamble
;; C-c C-p C-d   preview-document       C-c C-p C-i      preview-goto-info-page

여기 알고 나면 조금 놀라운 사실이 있습니다. preview-latex이 뒤에서 쓰는 preview.sty는, standalone 클래스가 그림을 잘라 내려고 불러들이는 바로 그 파일입니다. 이 기계의 TeX Live 2024에 들어 있는 preview.sty는 2024년 1월 17일자 13.3판이고, 머리말에는 AUCTeX의 일부로 개발되었다고 적혀 있으며, \ProvidesPackage 줄의 식별 문자열은 말 그대로 (AUCTeX/preview-latex)입니다. 그리고 standalone.cls의 571행이 \RequirePackage{preview}입니다. preview 옵션이 기본값 참이므로 \documentclass{standalone}이라고 쓰는 순간 이미 돌고 있습니다. Emacs을 한 번도 열어 본 적이 없어도, TikZ 그림을 낱개 파일로 잘라 낸 적이 있다면 당신은 Emacs 패키지의 일부를 써 온 셈입니다. LyX의 미리보기와 pst-pdf도 같은 돌을 딛고 있습니다.

실무상의 전제는 둘입니다. preview-latex은 이미지를 만드는 데 Ghostscript(7.07 이상)를 요구하며, 이는 DVI 경로에서도 PDF 경로에서도 필요합니다. DVI 경로에서는 여기에 Dvips나 dvipng 중 하나가 더 필요합니다. dvipng는 추가 필수품이 아니라 Dvips의 대안이고, 매뉴얼은 Dvips와 Ghostscript 조합보다 훨씬 빠르다고 적어 두었습니다. 다른 하나는 Emacs 자체가 이미지 표시를 지원하도록 빌드되어 있어야 한다는 점입니다. 효과가 큰 곳은 긴 수식이나 가환 도식이 빽빽한 원고입니다. 조판 결과를 한눈에 확인할 수 있으니, 컴파일하고 PDF를 보러 가는 왕복이 통째로 사라집니다.

AUCTeX은 이미 일본어를 합니다 — japanese-LaTeX-mode와 pTeX 계열 엔진

일본어를 위해 다른 모드를 찾아 나서기 전에 알아 둘 것이 있습니다. AUCTeX에는 처음부터 tex-jp.el이 들어 있어 japanese-LaTeX-modejapanese-plain-TeX-mode를 제공합니다. 이 파일은 엔진 목록에 ptex, jtex, uptex를 더하고, japanese-TeX-engine-default(기본값 ptex)가 어느 것을 쓸지 정합니다. 게다가 TeX-parse-self가 켜져 있으면 클래스 이름에서 알맞은 엔진을 자동으로 고릅니다. jbook이나 jsarticle, tjreport를 보고 platex을 부를지 uplatex을 부를지 판단하는 것입니다. 매뉴얼이 일본어 LaTeX 이용자에게 TeX-parse-self를 권하는 이유가 바로 이것입니다. 기본 클래스는 japanese-LaTeX-default-style이 정하며 초깃값은 "jarticle"입니다.

자동 판정이 빗나가기도 합니다. 매뉴얼이 스스로 드는 예가 j-article입니다. AUCTeX은 이를 보고 NTT jLaTeX을 고르지만, 글쓴이가 뜻한 것은 ASCII pLaTeX이었다는 어긋남입니다. 그럴 때는 파일 끝의 로컬 변수 블록에서 명시적으로 덮어씁니다. 일본어 문서를 기본으로 하고 싶다면 TeX-default-modejapanese-LaTeX-mode로 두면 됩니다. 덧붙이자면, AUCTeX 매뉴얼은 일본어에 관해 주요 보수자 중 일본어를 읽는 사람이 없다고 분명히 밝혀 두었습니다. 이 구석이 지금껏 살아 있는 것은 일본어 사용자들의 보고 덕분입니다.

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

YaTeX(野鳥) — 새 이름을 가진 모드의 일족

YaTeX은 히로세 유지(広瀬雄二)가 만든 Emacs용 LaTeX 메이저 모드이며, 저작권 표시가 1991년부터 지금까지 이어집니다. 일본어 이름 野鳥야초(yachou)로 읽고 매뉴얼은 이를 Wild Bird로 옮기며 일본어 말장난이라고 설명합니다. 재미있는 것은 그다음입니다. 이 말장난이 한 일족을 낳았습니다. Vz 편집기용 LaiTeX(Thunder Bird), Wz용 HackTeX(Swan), xyzzy용 HiTeX(Flying Bird), 그리고 만든 이가 “fj 야조회”라 부른 KaTeX. 1990년대 일본 TeX 세계에서는 편집기 지원 도구에 새 이름을 붙이는 것이 거의 관례였던 셈입니다. 라이선스는 2절 BSD(2017년 9월 9일의 1.80판 이후)이고, 최신은 2026년 8월의 1.84.1로 지금도 작성자 본인의 손으로 갱신되고 있습니다.

설계 사상은 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 SPC가 임의 완성입니다. \에 이어 명령 이름의 앞부분을 치고 누르면 그 자리에서 완성해 줍니다. 조판은 C-c t로 시작합니다. C-c t j가 조판, C-c t p가 미리보기, C-c t b가 BibTeX, C-c t i가 makeindex, C-c t d가 latex에서 dvipdfmx까지의 한 줄, C-c t r가 영역만 조판, C-c t k가 중단입니다. 이동은 C-c g로 대응하는 대상으로 뜁니다(\begin\end, \label\ref, \include와 그 파일). 고쳐 쓰기는 C-c c(변경)와 C-c k(삭제)입니다.

여기서 한 가지 주의. C-c t jt수식 키 없는 맨 t입니다. Emacs에서 C-c 영문자는 이용자를 위해 남겨 둔 자리라서, YaTeX이 그곳을 쓰는 것을 꺼리는 사람도 있습니다. 그래서 YaTeX-inhibit-prefix-lettert로 두면 C-c 영문자의 기본 키가 모두 C-c C-영문자로 옮겨 가고, 조판은 Emacs다운 C-c C-t j가 됩니다(대문자를 쓰는 영역 지정 완성은 남습니다. 그것까지 지우려면 t 대신 1을 넣습니다). 기본값은 nil이므로, 아무것도 하지 않으면 정말로 C-c t j 쪽입니다. 인터넷에서 찾은 설정 조각이 어느 유파로 쓰였는지는 이 변수를 보면 알 수 있습니다.

일본어 쪽의 요처가 되는 변수가 몇 있습니다. YaTeX-kanji-code는 저장할 때 쓰는 한자 인코딩으로, nil은 “변환하지 않고 파일 본래의 coding-system을 지킨다”, 0은 no-conversion, 1은 Shift JIS, 2는 JIS, 3은 EUC, 4는 UTF-8입니다. nil0은 다른 것이며, 현행 소스의 기본값은 nil이라 파일 인코딩이 멋대로 바뀌는 것을 원치 않는 오늘의 쓰임새에 맞습니다. tex-command는 실제로 부르는 조판 명령으로 "latexmk", "uplatex", "lualatex -synctex=1" 등을 지정합니다. bibtex-commandmakeindex-commandupbibtex, upmendex로 두면 일본어 문헌과 색인이 통합니다. 또한 YaTeX에는 같은 배포물 안에 HTML용 자매 모드 yahtml이 함께 들어 있고, MELPA의 yatex 패키지는 작성자 본인의 Mercurial 저장소에서 곧바로 빌드됩니다.

init.el
(use-package yatex
  :ensure t                     ; from MELPA, built from the author's repo
  :mode ("\\.tex\\'" . yatex-mode)
  :config
  (setq YaTeX-kanji-code nil    ; keep the file's own coding system
        tex-command "latexmk"   ; or "uplatex", "lualatex -synctex=1"
        bibtex-command "upbibtex"
        makeindex-command "upmendex"
        ;; t moves C-c <letter> bindings to C-c C-<letter>.
        YaTeX-inhibit-prefix-letter t))

어느 쪽을 고를까요. AUCTeX과 YaTeX은 함께 쓰기보다 한쪽으로 몰아 두는 편이 자연스럽습니다. preview-latex과 RefTeX을 포함한 한 벌을 쓰고 싶다면 AUCTeX. 일본어 문서를 적은 수의 빠른 완성 타건으로 재게 쓰고 싶다면 YaTeX. 일본어 지원 자체는 앞 절에서 보았듯 AUCTeX에도 들어 있으니, 오늘의 정직한 판단은 “일본어니까 YaTeX”이 아니라 “이 타건 방식이 손에 맞으니까 YaTeX”입니다.

처음 삼십 분에 정할 것

  • 조판을 누가 맡을지 먼저 정하기. C-c C-c로 단계를 보며 갈지, TeX-command-default"LaTeXMk"로 두고 latexmk에 전부 맡길지. 테마나 색보다 이것이 먼저입니다.
  • 작은 main.tex으로 고리를 한 바퀴 돌려 보기. C-c C-a로 끝까지 달리고, PDF가 열리면 C-c (로 수식이나 그림에 라벨을 붙이고, 본문에서 C-c )로 참조를 넣고, 오류가 나면 TeX-next-error로 다음 오류로 뜁니다.
  • 안 될 때는 바깥에서 갈라 보기. 터미널에서 같은 프로젝트를 한 번 빌드해 봅니다. 거기서 latexmk가 실패한다면 init.el을 아무리 고쳐도 소용없고, 반대로 통한다면 의심할 것은 Emacs가 물려받은 PATH입니다.
  • 손에 있는 판의 매뉴얼을 읽기. 설정 변수의 뜻을 찾을 때는 C-h i로 설치된 판의 Info를 엽니다. 웹의 매뉴얼은 몇 판 뒤처져 있을 수 있습니다.
  • 빌드를 프로젝트에 고정하기. 장을 파일로 나눴다면 .latexmkrc를 프로젝트 최상위에 둡니다. 그러면 Emacs에서도, 다른 편집기에서도, CI에서도 같은 PDF가 나옵니다.