Emacs org-modeを使ってみる: (14) LaTeXにエクスポート

このエントリーをはてなブックマークに追加

今回は,LaTeXファイルにエクスポートする方法についてまとめてみる.
なおUbuntu 8.04 LTSとEmacs22上で, org-6.34c (2010年1月10日リリース)の利用を前提にしている.

設定

.emacs等に以下のように設定する.本来の org-export-latex-classes の設定を上書きしているので注意.

(setq org-export-latex-coding-system 'euc-jp-unix)
(setq org-export-latex-date-format "%Y-%m-%d")
(setq org-export-latex-classes nil)
(add-to-list 'org-export-latex-classes
  '("jarticle"
    "\\documentclass[a4j]{jarticle}"
    ("\\section{%s}" . "\\section*{%s}")
    ("\\subsection{%s}" . "\\subsection*{%s}")
    ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
    ("\\paragraph{%s}" . "\\paragraph*{%s}")
    ("\\subparagraph{%s}" . "\\subparagraph*{%s}")
))

pLaTeX (EUC版) と dvipdfmx の利用を前提にしている.

  • 2009-02-21追記:(setq org-export-latex-coding-system 'euc-jp-unix) を追加した.

orgファイルの例

以下は元のorgファイル latexexport.org の内容である.

#+TITLE: orgファイルの LaTeX エクスポート
#+AUTHOR: 屯遁
#+EMAIL: 
#+DATE: 2010年2月17日
#+LANGUAGE: ja
#+OPTIONS: toc:nil
#+LATEX_CLASS: jarticle
#+LATEX_CLASS_OPTIONS: [a4j]
#+LATEX_HEADER: \usepackage{org}
#+MACRO: em \bgroup\color{red}$1\egroup
* ヘッダ
** タイトル等
   タイトルや著者等は以下のように記述する.

   #+BEGIN_EXAMPLE
   #+TITLE: orgファイルのLaTeXエクスポート
   #+AUTHOR: 屯遁
   #+EMAIL: 
   #+END_EXAMPLE

** オプションの指定
   オプションを以下のように指定する.

   #+BEGIN_EXAMPLE
   #+OPTIONS: toc:nil
   #+END_EXAMPLE

   =toc:nil= は目次なしを表す.

** クラスファイルの指定
   クラスファイルは以下のように指定する.

   #+BEGIN_EXAMPLE
   #+LATEX_CLASS: jarticle
   #+LATEX_CLASS_OPTIONS: [a4j,11pt]
   #+LATEX_HEADER: \usepackage{org}
   #+END_EXAMPLE

   =org.sty= の内容については,[[*インクルード][インクルード]] を参照のこと.

* 基本要素
** 文字修飾
   *太字* , /斜体/ などの文字修飾は,以下のように記述する.
   ただし,「 =*bold*= 」等の前後には半角スペースが必要になる点に注意する.

   #+BEGIN_QUOTE
   |------------+----------|
   | 記述       | 表示     |
   |------------+----------|
   | ~*bold*~   | *bold*   |
   | ~/italic/~ | /italic/ |
   | ~_ulined_~ | _ulined_ |
   | ~=fixed=~  | ~fixed~  |
   |------------+----------|
   #+END_QUOTE

** 下付き上付き文字
   下付き文字や上付き文字は,以下のように記述する
   ([[*LaTeX表記][LaTeX表記]]も参照).

   #+BEGIN_QUOTE
   |-------------+-----------|
   | 記述        | 表示      |
   |-------------+-----------|
   | ~x_ij~      | x_ij      |
   | ~10^23~     | 10^23     |
   | ~a_{i-1}^2~ | a_{i-1}^2 |
   | ~_{5}C_2~   | _{5}C_2   |
   |-------------+-----------|
   #+END_QUOTE

   「 =_= 」や「 =^= 」を記述したい場合は,
   「 \ 」(バックスラッシュ)を前に付ける.

** インライン画像
   画像のインライン表示は以下のように記述する.
   「file: 」を忘れないように記述する.

   #+BEGIN_EXAMPLE
   #+ATTR_LaTeX: width=0.5\textwidth
   [[file:org-2010-02-07.png]]
   #+END_EXAMPLE

   以下は,上のように記述したインライン画像の例である.

   #+ATTR_LaTeX: width=0.5\textwidth
   [[file:org-2010-02-07.png]]

** リンク
   リンクは,通常のorgでの記法にしたがって記述すれば,
   [[* ヘッダ][ヘッダ]] や [[http://d.hatena.ne.jp/tamura70/][屯遁のパズルとプログラミングの日記]] のようになる.

** コメント
   「* COMMENT 見出し」のようになっている部分木は,
   コメントとなりエクスポートされない.

*** COMMENT コメントの例
   この部分はエクスポートされない
**** この部分もエクスポートされない
* ブロック要素
** リスト
   リストは,通常のorgでの記法にしたがって記述すれば良い.

   - 項目1
     - 子項目1
     - 子項目2
   - 項目2
     1. 最初
     2. 二番目

** 表
   表は,以下のように記述すれば枠線が表示される.
   #+BEGIN_EXAMPLE
   #+ATTR_LaTeX: align=|l|r|r|r|r|r|
   |----------+----+----+----+----+------|
   |          | Q1 | Q2 | Q3 | Q4 | 合計 |
   |----------+----+----+----+----+------|
   | パソコン | 30 |  0 | 50 |  0 |   80 |
   | ソフト   |  5 | 15 | 20 |  3 |   43 |
   | 通信     |  2 |  2 |  2 |  2 |    8 |
   |----------+----+----+----+----+------|
   | 合計     | 37 | 17 | 72 |  5 |  131 |
   |----------+----+----+----+----+------|
   #+END_EXAMPLE

   以下は,上のように記述した表の例である.

   #+ATTR_LaTeX: align=|l|r|r|r|r|r|
   |----------+----+----+----+----+------|
   |          | Q1 | Q2 | Q3 | Q4 | 合計 |
   |----------+----+----+----+----+------|
   | パソコン | 30 |  0 | 50 |  0 |   80 |
   | ソフト   |  5 | 15 | 20 |  3 |   43 |
   | 通信     |  2 |  2 |  2 |  2 |    8 |
   |----------+----+----+----+----+------|
   | 合計     | 37 | 17 | 72 |  5 |  131 |
   |----------+----+----+----+----+------|

** センタリング
   センタリングしたい部分は,以下のように記述する.
   #+BEGIN_EXAMPLE
   #+BEGIN_CENTER
   すべてをできる限りシンプルにせよ.\\
   ただしそれ以上はシンプルにするな.
   #+END_CENTER
   #+END_EXAMPLE

   以下は,エクスポートした結果である.
   #+BEGIN_CENTER
   すべてをできる限りシンプルにせよ.\\
   ただしそれ以上はシンプルにするな.
   #+END_CENTER

** 引用
   引用の部分は,以下のように記述する.
   #+BEGIN_EXAMPLE
   #+BEGIN_QUOTE
   すべてをできる限りシンプルにせよ.
   ただしそれ以上はシンプルにするな. -- アインシュタイン
   #+END_QUOTE
   #+END_EXAMPLE

   以下は,エクスポートした結果である.
   #+BEGIN_QUOTE
   すべてをできる限りシンプルにせよ.
   ただしそれ以上はシンプルにするな. -- アインシュタイン
   #+END_QUOTE

** 例示
   以下のように行を「:」から始めれば, =<pre>= タグとしてエクスポートされる.
   :  : 例示の行
   :  :   <pre> タグでエクスポートされる

   以下は,上の例のエクスポート結果である.

   : 例示の行
   :   <pre> タグでエクスポートされる

   また,「 =#+BEGIN_EXAMPLE= 」,「 =#+END_EXAMPLE= 」でくくった場合も,
   =<pre>= タグとしてエクスポートされる.

   : #+BEGIN_EXAMPLE
   : 例示のブロックの例
   :   <pre> タグでエクスポートされる
   : #+END_EXAMPLE

   プログラムの場合は「 =#+BEGIN_SRC=  」を用い,
   後ろにはプログラミング言語名を指定する.
   また,「-n」オプションを用いると行番号も表示される.

   #+BEGIN_EXAMPLE
   #+BEGIN_SRC c -n
   int main(int argc, char* argv[]) {
       .....
   }
   #+END_SRC
   #+END_EXAMPLE

   以下は,上の例をエクスポートした結果である.

   #+BEGIN_SRC c -n
   int main(int argc, char* argv[]) {
       .....
   }
   #+END_SRC
   
* 進んだ利用
** インクルード
   以下のように記述すると,ファイルをインクルードできる
   (インデントせずに記述する).

   : #+INCLUDE: "org.sty" example

   以下は,上のように記述して =org.sty= をインクルードした結果である.

#+INCLUDE: "org.sty" example

** マクロ
   以下のように記述すると,マクロを定義できる.
   「 =em= 」がマクロ名,その後ろがマクロ本体である.
   引数は「 =$1= 」,「 =$2= 」等を用いる.

   #+BEGIN_EXAMPLE
   #+MACRO: em \bgroup\color{red}$1\egroup
   #+END_EXAMPLE

  ~{{{~ =em(強調部分)= ~}}}~ のように三重の波カッコでくくるとマクロが展開され,
  結果は「{{{em(強調部分)}}}」となる.

** LaTeX表記
   LaTeXの式や数式ブロックは以下のようにして記述する.

   #+BEGIN_EXAMPLE
   $\sum_{i=1}^n a_i x_i \ge b$ の時
   #+END_EXAMPLE

   上の例は,以下のような結果になる.

   #+BEGIN_QUOTE
   $\sum_{i=1}^n a_i x_i \ge b$ の時
   #+END_QUOTE

   数式ブロックは,そのまま記述できる.

   #+BEGIN_EXAMPLE
   \begin{eqnarray*}
   x & = & \sqrt{\frac{a}{b}}
   \end{eqnarray*}
   #+END_EXAMPLE

   上の例は,以下のような結果になる.

   #+BEGIN_QUOTE
   \begin{eqnarray*}
   x & = & \sqrt{\frac{a}{b}}
   \end{eqnarray*}
   #+END_QUOTE

-----

エクスポートの実行

「C-c C-e l」でLaTeXにエクスポートできる.

スタイルファイルの例

以下はスタイルファイルorg.styの内容である.

\AtBeginDvi{\special{pdf:tounicode EUC-UCS2}}
\usepackage{longtable}
\usepackage{float}
\usepackage{wrapfig}
\usepackage{amssymb}
\usepackage[dvipdfm]{graphicx,color}
\usepackage[dvipdfm,bookmarks=true,bookmarksnumbered=true,bookmarkstype=toc,
  colorlinks,linkcolor=blue,urlcolor=blue]{hyperref}

PDFの作成

以下のようにしてPDFを作成する.

  $ platex latexexport.tex
  $ platex latexexport.tex
  $ dvipdfmx latexexport.dvi