Emacs org-modeを使ってみる: (17) orgの表を埋め込む

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

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

LaTeXファイル内に表を埋め込む

LaTeXファイルを開いて,「M-x orgtbl-mode RET」でマイナーモードをorgtbl-modeにする.
LaTeXファイル中に以下のように記述する.

% BEGIN RECEIVE ORGTBL table1
% END RECEIVE ORGTBL table1

\iffalse
#+ORGTBL: SEND table1 orgtbl-to-latex
  |----------+----+----+----+----+------|
  |          | Q1 | Q2 | Q3 | Q4 | 合計 |
  |----------+----+----+----+----+------|
  | パソコン | 30 |  0 | 50 |  0 |   80 |
  | ソフト   |  5 | 15 | 20 |  3 |   43 |
  | 通信     |  2 |  2 |  2 |  2 |    8 |
  |----------+----+----+----+----+------|
  | 合計     | 37 | 17 | 72 |  5 |  131 |
  |----------+----+----+----+----+------|
\fi

ここで,「table1」は表の名前を表している.
「#+ORGTBL」の行にカーソルを移動して「C-c C-c」とタイプすると,以下のように「table1」という名前で指定した場所にLaTeXの表が埋め込まれる!

% BEGIN RECEIVE ORGTBL table1
\begin{tabular}{lrrrrr}
\hline
 & Q1 & Q2 & Q3 & Q4 & 合計 \\
\hline
パソコン & 30 & 0 & 50 & 0 & 80 \\
ソフト & 5 & 15 & 20 & 3 & 43 \\
通信 & 2 & 2 & 2 & 2 & 8 \\
\hline
合計 & 37 & 17 & 72 & 5 & 131 \\
\hline
\end{tabular}
% END RECEIVE ORGTBL table1

\iffalse
#+ORGTBL: SEND table1 orgtbl-to-latex
  |----------+----+----+----+----+------|
  |          | Q1 | Q2 | Q3 | Q4 | 合計 |
  |----------+----+----+----+----+------|
  | パソコン | 30 |  0 | 50 |  0 |   80 |
  | ソフト   |  5 | 15 | 20 |  3 |   43 |
  | 通信     |  2 |  2 |  2 |  2 |    8 |
  |----------+----+----+----+----+------|
  | 合計     | 37 | 17 | 72 |  5 |  131 |
  |----------+----+----+----+----+------|
\fi

orgの表は,上のように「\iffalse」,「\fi」でくくるか,「\end{document}」の後ろに置けば良い.

オプション
オプション 意味
:skip N 表の最初のN行(横線も含む)を無視する
:skipcols (n1 n2 ...) n1, n2, ...番目の列を無視する
:splice t tabular環境を出力しない
:fmt fmt 各列の出力フォーマットを指定する
:lstart str 各行の先頭に文字列strを出力する
:lend str 各行の終わりで \\ の代りにstrを出力する

以下は,オプションを指定した例である.

% BEGIN RECEIVE ORGTBL table1
\hline
{\bf パソコン} & 30 & 0 & 50 & 0 \\[1em]
{\bf ソフト} & 5 & 15 & 20 & 3 \\[1em]
{\bf 通信} & 2 & 2 & 2 & 2 \\[1em]
\hline
{\bf 合計} & 37 & 17 & 72 & 5 \\[1em]
\hline
% END RECEIVE ORGTBL table1

\iffalse
#+ORGTBL: SEND table1 orgtbl-to-latex :skip 2 :skipcols (6) :splice t :fmt (1 "{\\bf %s}") :lend " \\\\[1em]"
  |----------+----+----+----+----+------|
  |          | Q1 | Q2 | Q3 | Q4 | 合計 |
  |----------+----+----+----+----+------|
  | パソコン | 30 |  0 | 50 |  0 |   80 |
  | ソフト   |  5 | 15 | 20 |  3 |   43 |
  | 通信     |  2 |  2 |  2 |  2 |    8 |
  |----------+----+----+----+----+------|
  | 合計     | 37 | 17 | 72 |  5 |  131 |
  |----------+----+----+----+----+------|
\fi

その他のファイル内に表を埋め込む

「orgtbl-to-latex」以外にも以下の変換が可能である.

関数名 変換形式
orgtbl-to-texinfo texinfo
orgtbl-to-html HTML
orgtbl-to-csv カンマ区切りのCSV
orgtbl-to-tcsv タブ区切りのCSV

ただし,orgtbl-to-html では「:fmt」,「:lstart」,「:lend」のオプションは利用できない.