Emacs Org Mode から LaTeX Export する

2015年大晦日23時35分、NHKの第66回紅白歌合戦では松田聖子が「赤いスイートピー」を歌っています。なんだか、今年は本当に年末という感じがしません。「今年も」というべきか、ここ数年はまとまった時間の取れる年末年始にパソコンの設定を見直すことが恒例となっています。大掃除の一環だと思っています…

さて、私は学生時代からの流れで文章を書くときは未だに LaTeX を利用しますが、実際には Emacs の Org Mode で文章を書いてそれを LaTeX Export するという使い方しかしていません。複雑な構造の文書を作成するときは直接 TeX ファイルを扱った方が遥かに融通は利くでしょうが、そもそもそういう複雑な構造の文書を作成する機会そのものが無くなってしまいました…

Org Mode の最も基本的な機能は Emacs 上で動作するアウトライナーとしてのそれですが、その他様々な機能が実装されており、Org Mode で作成したテキストファイルを LaTeX など 様々な形式 にエクスポートすることもできます。LaTeX の構文を意識せずに PDF まで作成できますので、Org Mode LaTeX Export は、使い方としては、同じくバックエンドに LaTeX を利用した LyX なんかと似ているかもしれません。

init.el

先日 久しぶりの Mac を購入したので、ここ数日いろいろ設定しているのですが、この Org Mode も古い Mac からそのまま設定ファイルをコピーすると、変数などいくつか仕様が変わっているようなので、ここに最低限の設定をメモして整理しておきたいと思います。

Org-mode version 8.3.2
GNU Emacs 24.5.1 (x86_64-apple-darwin15.2.0, Carbon Version 157 AppKit 1404.34)
;; Org Mode LaTeX Export
(require 'ox-latex)
(require 'ox-bibtex)
(unless (boundp 'org-latex-classes)
  (setq org-latex-classes nil))

;; pdf process = latexmk
(setq org-latex-pdf-process '("latexmk %f"))
;; default class = jsarticle
(setq org-latex-default-class "jsarticle")

;; org-latex-classes
(add-to-list 'org-latex-classes
             '("jsarticle"
               "\\documentclass[11pt,a4paper,uplatex]{jsarticle}
                [NO-DEFAULT-PACKAGES] [PACKAGES] [EXTRA]"
               ("\\section{%s}" . "\\section*{%s}")
               ("\\subsection{%s}" . "\\subsection*{%s}")
               ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
               ("\\paragraph{%s}" . "\\paragraph*{%s}")
               ("\\subparagraph{%s}" . "\\subparagraph*{%s}")
               ))


;; org-export-latex-no-toc
(defun org-export-latex-no-toc (depth)
    (when depth
      (format "%% Org-mode is exporting headings to %s levels.\n"
              depth)))
  (setq org-export-latex-format-toc-function 'org-export-latex-no-toc)

;; reftex with org mode
(add-hook 'org-mode-hook 'turn-on-reftex)
(defun org-mode-reftex-setup ()
   (load-library "reftex")
   (and (buffer-file-name)
        (file-exists-p (buffer-file-name))
        (reftex-parse-all))
   (define-key org-mode-map (kbd "C-c [") 'reftex-citation))

LaTeX パッケージを指定するには Org ファイルに、

 #+LATEX_HEADER: \usepackage[hyperref,x11names]{xcolor}
 #+LATEX_HEADER: \usepackage[colorlinks=true,urlcolor=SteelBlue4,linkcolor=Firebrick4]{hyperref}
 #+LATEX_HEADER: \usepackage[AUTO]{inputenc}
 ...

というように追加します。あるいは org-latex-packages-alist で Emacs の設定ファイルに、

(setq org-latex-packages-alist
  '(("AUTO" "inputenc"  nil)
    ("hyperref,x11names" "xcolor"  nil)
    ("colorlinks=true,urlcolor=SteelBlue4,linkcolor=Firebrick4" "hyperref"  nil)
    ;; ...
    ))

と書くこともできます。

Test

上の設定で Org Export LaTeX のテストをしてみます。下のようなテストファイルを作成してみました。

test.org:

 # -*- coding: utf-8 -*-
 #+TITLE: Org Mode LaTeX Exoport のテスト
 #+AUTHOR: 某甲 某
 #+EMAIL: hoge@example.com
 #+LANGUAGE: ja
 #+OPTIONS:   H:3 num:t toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
 #+OPTIONS:   TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:nil
 #+LATEX_CLASS: jsarticle
 #+LATEX_CLASS_OPTIONS:[a4paper,11pt,uplatex]
 #+LATEX_HEADER: \usepackage{txfonts}
 #+LATEX_HEADER: \usepackage[hyperref,x11names]{xcolor}
 #+LATEX_HEADER: \usepackage[colorlinks=true,urlcolor=SteelBlue4,linkcolor=Firebrick4]{hyperref}
 #+LATEX_HEADER: \usepackage[AUTO]{inputenc}

 #  ここから本文
 #+LATEX: \tableofcontents

 * test
 これはテストです。

 * sample
 これはサンプルです。
 \cite{test_2015}を引用してみます。

 #+LaTeX: \bibliographystyle{jplain}
 #+LaTeX: \bibliography{test}

 #  ここまで

RefTeX も使用できますので “C-c [” で BibTeX の文献も引用できます。

test.bib:

@Book{test_2015,
  author =       {某甲 某},
  title =        {Emacs の AUCTeX のテスト},
  year =         {2015}
}

\C-c \C-e + l + o” (Export command, Export to LaTeX, As PDF file and open) で latexmk が走り、出来上がった PDF が開かれます。 latexmk の設定は 前の記事 と同じです。

test.pdf:

mac_org_mode_01.png

1 thought on “Emacs Org Mode から LaTeX Export する

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください