Sunday, December 22, 2013

AUCTeX

LaTeX 환경: Emacs+AUCTeX

LaTeX 환경: Emacs+AUCTeX


;; =================================================
;; εμαcs is ⎋[esc]⌘[meta]⌥[alt]⌃[ctrl]⇧[shift].
;; =================================================

이 문서는 emacs org-mode로 작성된 글입니다.


Operating System Environments

  • Main- : OS X Mavericks (10.9.1)
  • Sub- : Debian GNU/Linux Wheezy (7.3)
  • Server: Debian GNU/Linux Squeeze || Lenny
  • Mobile: iOS 7.0.4

LaTeX 환경을 한마디로 하자면, Emacs(+AUCTeX) + Bash shell + a viewer 이다. 가히 최고의 조판 환경이다. Emacs를 editor로 써서 source 파일(.tex)을 편집하고, compile은 bash shell에서 하며, 완성된 문서(.pdf, .dvi, etc)는 전용(?) software로 확인하는 방식이다.

물론 많은 사람들이 LaTeX을 쓰는데 특화된 전용 softwares를 쓰기도 한다. OS X 용의 TeXShop, Linux KDE environment의 Kile, 최근에 다른 모두를 앞도하기 시작한 cross-platform의 TeXworks 등이 특히 유명하다. 이들은 모두 이 안에서 편집하고, 만들고, 볼 수 있다. 그냥 보기에는 이들 전용 softwares에 비해서, Emacs(+AUCTeX) + Bash shell + a viewer 조합이 불편해 보이는 것도 사실이다. 하지만 이 조합이 주는 장점은, 첫째 모든 editor를 emacs 하나로 통일 할 수 있고, 둘째 .pdf 전용 viewer 사용, 셋째 마우스 사용이 거의 없다는 점 등이다. 게다가 Emacs(+AUCTeX) 는 정말 강력한 LaTeX 사용 환경을 제공한다. 이 때문에 나는 Emacs에 입문하게 되었다. 현재는 LaTeX 에다가 C, FORTRAN, MATHEMATICA code, 등의 내가 쓰는 모든 source codes를 emacs 안에서 해결하고 있을 뿐만 아니라, org-mode, deft, markdown-mode 등으로 이메일, 블로그, Todos 등도 모두 emacs로 해결하고 있다.

Emacs(+AUCTeX) + Bash shell + a viewer 조합에서 OS 마다 emacs pork도 다르고 pdf viewer도 달라진다. 또한 어떤 emacs 종류를 쓰느냐에 따라 AUCTeX이 깔려있기도 하고 아니기도 하다. Shell 계를 평정한 bash shell 만은 다 같지만 OS 마다 이름이 조금씩 다르다. OS X에서는 Terminal.app이고 Debian GNU/Linux와 Kubuntu에서는 Konsole 혹은 Terminal이라고 불린다. 일단 이 환경을 완성하면, OS와는 상관없이 사용자가 실제 LaTeX를 쓰는 방법은 동일하다.

여기에 BibTeX까지 쓰면 금상첨화이다. AUCTeX과는 다르게 Emacs에서 BibTeX 사용을 위해 설치하거나 설정해야 할 일을 별로 없다. 그냥 쓰면 된다. 자세한 사용 방법은 지난 Posts를 참고하자.

BibTeX까지 쓰는 경우 간단한 문서 작성 workflow는 다음과 같다. 예를 들어, Source는 main.tex 라 하고 이 안에 적당한 BibTeX 파일이 사용되어 있으며 pdflatex 으로 compile하는 경우에

  1. Emacs의 AUCTeX mode로 main.tex 문서를 편집한 후,
  2. Bash shell에서 아래를 차례로 실행,
    $pdflatex main
    $pdflatex main
    $bibtex main
    $bibtex main
    $pdflatex main
    $pdflatex main
    
  3. 그러면 viewer에서 자동으로 바뀐 pdf 문서를 볼 수 있다.

FYI) 위의 2.에서 두 번씩 compile한 이유는 처음에 문서를 만들 때, 그리고 bibliography 를 새로 넣을 때만 필요하다. 그렇지 않은 경우는 한 번만 하면 된다.

OS X

OS X에서 TeX Live 환경 설치는 MacPorts를 사용할 경우, Bash shell(Terminal.app)에서 아래를 실행하는 것으로 끝이다.

$sudo port install texlive

다른 경우나 자세한 설치 과정은 지난 Post를 참고하자.

Aquamacs + Bash shell(Terminal.app) + Skim

Mac OS X Snow Leopard 까지는 Aquamacs + Bash shell(Terminal.app) + Preview.app 조합으로 썼는데, Lion은 안 써봐서 모르겠지만 Mountain Lion 부터 Preview.app이 LaTeX 환경의 pdf viewer로 쓰기에는 엉망이 되어서, 이제는 Aquamacs + Bash shell(Terminal.app) + Skim 조합이 최상이다.

GPL license의 Aquamacs는 현재(<2013-12-21 Sat>) Aquamacs 3 (preview 3) 을 배포하고 있지만, 한글 사용과 RefTeX 사용에 문제가 있으므로 version 2.5 사용을 추천한다. 어떤 version을 쓰냐와 관계없이 AUCTeX은 깔려있고 바로 쓸 수 있다. (-> Aquamacs 2.5 다운로드 페이지 바로 가기)

Skim은 BSD license의 .pdf (그리고 .eps) 전용 software로써 정말 가볍기 때문에 Aquamacs나 Emacs를 쓰지 않더라도 한 번 써보기를 추천한다. OS X Mavericks 출시 직후 잠시 조금 bugs가 있었으나, 현재(<2013-12-21 Sat>) 심각한 것들은 다 사라졌다. Skim을 그냥 쓰면, .tex 를 편집하여 compile 해서 .pdf 문서가 update 될 때마다 매번 update 하겠냐고 물어봐서 짜증을 유발한다. 원활한 사용을 위해 다시는 물어보지 않게 만들자. Bash shell(Terminal.app)을 열어 아래를 실행하자.

$defaults write -app Skim SKAutoReloadFileUpdate -boolean true

원래대로 되돌리려면, 아래 명령어를 실행하면 된다.1

$defaults delete -app Skim SKAutoReloadFileUpdate

다시 한번 이 조합을 언급하면,

  • Aquamacs 2.5 + Bash shell(Terminal.app) + Skim 1.4.7

Emacs(cocoa)

Emacs(cocoa) 설치는, 홈페이지에서 다운로드한 후 설치해도 되고, MacPorts를 이용해서 emacs-app port를 깔아도 된다. MacPorts 이야기는 많이 다루었으므로 지난 Posts를 참고하자.

Aquamacs와는 다르게 설정해 주어야 할 것들이 좀 있다. 우선 AUCTeX을 설치해야 한다. 그리고 RefTeX을 쓸 때 mini-buffer에 typing 하는 것들이 Emacs(cocoa)를 종료하면 다 사라지는데, 이렇게 쓰면 매우 불편하다. Bash shell에서 history를 저장하듯이 mini-buffer에서도 history를 저장하게 만들면, 다음에 쓸 때, 위/아래 화살표로 쉽게 불러올 수 있게 된다. Emacs(cocoa)와 MacPorts는 설치되어 있다고 가정하고, 다음 과정은

  1. 다음을 Bash shell(Terminal.app)에서 실행하여 AUCTeX을 설치하자.
    $sudo port install auctex
    
  2. 여기를 따라가서 전체 복사를 한 후, Desktop 폴더 아래에 savehist.el 이름의 파일을 만들어 붙여 넣고 저장한다. 아래를 Bash shell(Terminal.app)에서 실행하여 이 파일을 ~/emacs.d/ 아래로 이동시킨다.
    mv ~/Desktop/savehist.el ~/.emacs.d/savehist.el
    
  3. ~/.emacs 파일을 Emacs(cocoa)로 열어 아래를 붙여 넣는다.2
    ;; -------------------------------------------
    ;; auctex for emacs(cocoa)
    ;; -------------------------------------------
    (require 'tex-site)
    ;; -------------------------------------------
    ;; with manually chosen directory
    ;; -------------------------------------------
    (add-to-list 'load-path "~/.emacs.d/")
    ;; -------------------------------------------
    ;; enable savehist.el for saving minibuffer history in emacs(cocoa)
    ;; -------------------------------------------
    (savehist-mode 1)
    ;; -------------------------------------------
    ;; For LaTeX-mode in emacs(cocoa)
    ;; -------------------------------------------
    (add-hook 'LaTeX-mode-hook 'turn-on-reftex)   ; with AUCTeX LaTeX mode
    (add-hook 'latex-mode-hook 'turn-on-reftex)   ; with Emacs latex mode
    

FYI) MacPorts를 통해서 AUCTeX을 설치하면, tex-live를 비롯한 tex 관련 ports를 모두 재설치 혹은 업그레이드 한다. MacTeX으로 LaTeX 환경을 구성한 경우에는 위의 방법이 먹힐지 장담할 수 없다.

Debian GNU/Linux and Kubuntu

Debian GNU/Linux에서 TeX Live 환경 설치는 Bash shell(Konsole/Terminal)에서 아래를 실행하는 것으로 끝이다.

$sudo apt-get install texlive-full

다른 경우나 자세한 설치 과정은 지난 Post를 참고하자.

GNU Emacs(+AUCTeX) + Bash shell(Konsole/Terminal) + Okular

상황은 Emacs(cocoa) section과 동일하다. 날 것 그대로(?) 쓰면, AUCTeX도 깔려있지 않고, mini-buffer history도 저장되지 않는다. Emacs(cocoa) section에서의 과정을 그대로 밟으면 된다. 약간씩 명령어 같은 것이 다른데, GNU Emacs 는 설치되어 있다고 가정하고, 다음 과정은 아래와 같다.

  1. 다음을 Bash shell(Konsole/Terminal)에서 실행하여 AUCTeX을 설치하자.
    $sudo apt-get install auctex
    
  2. 여기를 따라가서 전체 복사를 한 후, Desktop 폴더 아래에 savehist.el 이름의 파일을 만들어 붙여 넣고 저장한다. 아래를 Bash shell(Konsole/Terminal)에서 실행하여 이 파일을 ~/emacs.d/ 아래로 이동시킨다.
    mv ~/Desktop/savehist.el ~/.emacs.d/savehist.el
    
  3. ~/.emacs 파일을 GNU Emacs로 열어 아래를 붙여 넣는다.
    ;; -------------------------------------------
    ;; with manually chosen directory
    ;; -------------------------------------------
    (add-to-list 'load-path "~/.emacs.d/")
    ;; -------------------------------------------
    ;; enable savehist.el for saving minibuffer history in GNU Emacs
    ;; -------------------------------------------
    (savehist-mode 1)
    ;; -------------------------------------------
    ;; For LaTeX-mode in GNU Emacs
    ;; -------------------------------------------
    (add-hook 'LaTeX-mode-hook 'turn-on-reftex)   ; with AUCTeX LaTeX mode
    (add-hook 'latex-mode-hook 'turn-on-reftex)   ; with Emacs latex mode
    

Debian GNU/Linux과 Kubuntu에는 KDE environment에 따라오는 강력한 pdf viewer software인 Okular가 있다. 아무런 설정 변경없이, 그냥 쓰면 된다.


Footnotes:

1

참고 사이트: Ref#1, Ref#2

Created: 2013-12-22 Sun 10:56

Emacs 23.4.1 (Org mode 8.0.2)

Validate XHTML 1.0

No comments:

Post a Comment