Org Mode マニュアル

Table of Contents


Next: , Previous: (dir), Up: (dir)

Org Mode マニュアル

このマニュアルは,Org-mode 7.5に対応しています.

Copyright © 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover texts being “A GNU Manual,” and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled “GNU Free Documentation License.”

(a) The FSF's Back-Cover Text is: “You have the freedom to copy and modify this GNU manual. Buying copies from the FSF supports it in developing GNU and promoting software freedom.”

This document is part of a collection distributed under the GNU Free Documentation License. If you want to distribute this document separately from the collection, you can do so by adding a copy of the license to the document, as described in section 6 of the license.

--- ノードリストの細目 ---

まえがき

ドキュメントの構造

テーブル

スプレッドシート

ハイパーリンク

内部リンク

TODOアイテム

TODOキーワードの拡張的な使い方

進行記録

タグ

プロパティ(属性)とカラム(列)

カラムビュー

カラムの定義

日付と時刻

タイムスタンプの作成

デッドラインとスケジュール

作業に費やした時間の計測

キャプチャ/再配置/アーカイブ

キャプチャ

キャプチャテンプレート

アーカイブ

アジェンダビュー

アジェンダに組み込まれているビュー

表示とソート

カスタムアジェンダビュー

リッチエクスポートのためのマークアップ

構造化されたマークアップの要素

Embedded LaTeX

エクスポート

HTMLのエクスポート

LaTeXとPDFのエクスポート

DocBookエクスポート

公開

設定

設定例

ソースコードとの連携

ヘッダー引数

ヘッダー引数の利用

ヘッダー引数の指定

その他

他のパッケージとの関係

ハッキング

任意のシンタックスによる表やリスト

MobileOrg


Next: , Previous: Top, Up: Top

1 まえがき


Next: , Previous: まえがき, Up: まえがき

1.1 概要

Org-modeは,高速かつ効率的に動作するプレーンテキストのシステムを用いて,ノートを保存したり,TODOリストを管理したり,プロジェクトを計画するためのEmacsモードです.

プレーンなテキスト形式でリストやプロジェクトに関する情報を含む分散したノートから,Org-modeは組織的に結びついたタスク群を生成します.Org-modeはアウトラインモードを元に実装されているます.そのため,大きなファイルの内容をわかりやすく構造化した状態に維持できます.また,必要な部分だけを表示する機能と文書構造の編集機能がツリー形式の文書編集を手助けします.ビルトインされたテーブルエディタで簡単に表を作成できます.Org-modeは,TODOアイテム,デッドライン,タイムスタンプ,そして,スケジュール管理に対応しています.スケジュール管理はタスクを動的にアジェンダへ蓄積します.アジェンダはEmacsのcalendarとdiaryの多くの機能を利用し,スムーズに統合しています.プレーンテキストで記述されるURLに似たリンクは,ウェブサイト,メール,ネットのメッセージ,BBDBのデータ,そして,プロジェクトに関連するどのようなファイルとも結びついています.ノートの印刷や共有のために,構造化されたアスキー形式のファイルやHTMLのファイル,または(TODOとアジェンダアイテムに限り)iCalendar形式のファイルへOrg-modeのファイルをエクスポートできます.また,リンクの張られたウェブページ一式を公開するツールとしても役立ちます.

見出しとなるノードにメタデータを追加することで,Org-modeはプロジェクトを計画する環境となります.そのメタデータに基づくことでクエリの中から特定のエントリーを抽出でき,動的なagenda viewsを生成できます.

Org-modeはOrg-Babel環境を含んでいて,次のようなことが可能になります.すなわち,ソースコードブロックが組み込まれたファイルで作業でき,コードを評価,文書化,そして,文芸的プログラミングを実践できます.

Org-modeの自動的かつ文脈を読み取る表編集機能は,表計算ソフトと互換性があり,マイナーモードのOrgtblを動かすことでどのようなメジャーモードにも組み込めます.表を変換することで,たとえばLaTeXの表のように任意のファイルタイプで表を維持することができます.構造編集とリスト生成の機能は,マイナーモードのOrgstructによってOrg-modeの外部で利用できます.

Org-modeは単純なものは単純なまま保持します.初めて起動したOrg-modeは,わかりやすく,簡単に使えるアウトライナーのように感じるはずです.Org-modeに複雑さはなく,それでいて,必要に応じて数多くの機能を利用できます.Org-modeはツールボックスであり,様々な方法で,そして様々な目的で利用できます.例えば,具体的には以下のようなものです.

     • ツリーの表示状態の切り替えと構造編集を可能にしたアウトラインの拡張
     • 構造化されたノートを取るための、テキスト整形の仕組みと表編集機能
     • TODOリストの編集機能
     • 締切日とスケジュールの管理機能を備えた完全なアジェンダと予定表
     • Devid Allen 氏のGTDシステムを実行するための環境
     • シンプルなハイパーテキストシステム(HTMLとLaTeXエクスポートを含む)
     • 内部リンクで構成されたウェブページ群を生成するための公開ツール
     • 文芸的プログラミングのための環境

最新バージョンへのリンクがある、Org-modeのためのウェブサイトがあります.関連情報,よくある質問(FAQ),または,チュートリアルなどへのリンクも集約されています.http://orgmode.org で公開されています.

このマニュアルのバージョン7.3はpaperback book from Network Theory Ltd.で手に入ります.


Next: , Previous: 概要, Up: まえがき

1.2 インストール

重要: もしあなたが,Emacsの一部として組み込まれたOrg-modeを利用している,もしくは,XEmacsのパッケージを利用している場合には,このセクションを飛ばして直接アクティベーションに移動してください.あなたのEmacsに含まれているOrg-mode(存在する場合)のバージョンを見るためには,M-x load-library RET orgを実行してから,M-x org-versionを実行してください.

すでにインターネットからOrg-modeをダウンロードしているならば,.zip.tarもしくはGitアーカイブかを問いませんが,以下の手順に沿ってインストールしてください.まず,配布されたOrg-modeのディレクトリを解凍し,そこに移動します.次に,Makefileの最初のセクションを編集します.Emacsバイナリの名前を記入しなければなりません.たとえば,emacsもしくはxemacsのような名前です.最後に,ローカルのLispとInfoファイルが保存されているディレクトリへのパスを記入します.システムディレクトリへのアクセス権を持っていないならば,lisp(訳注:解凍したディレクトリの直下にあるサブディレクトリ)をEmacsのロードパスに加えることで,配布されたOrg-modeのディレクトリを使って,簡単にOrg-modeを動かせます.このようにするためには,.emacsに次の行を加えてください.

     (setq load-path (cons "~/path/to/orgdir/lisp" load-path))

もしcontribサブディレクトリのコードを使うならば,このディレクトリについても同様のステップを実行します.

     (setq load-path (cons "~/path/to/orgdir/contrib/lisp" load-path))

そして,シェルコマンドを使ってLispファイルをバイトコンパイルします.

     make

解凍したOrg-modeファイルがあるディレクトリでOrg-modeを動かすならば,これでインストール完了です.もしOrg-modeをシステムディレクトリにインストールしたいならば,管理者権限で次のコマンドを実行します.

     make install

INFOファイルのインストール方法はシステムに依存します.これは,install-infoプログラムの違いに原因があります.Debianであれば,install-infoがINFOファイルを正しいディレクトリにコピーし,INFOディレクトリファイル(訳注:dirのこと)を変更します.その他の多くのシステムでは,各ファイルが別々に正しいディレクトリにコピーされる必要があります.そして,install-infoがディレクトリファイルだけを修正します.システムのドキュメントを読んで,次のどちらのコマンドを必要とするかを調査してください.

     make install-info
     make install-info-debian

最後に,以下の一行を.emacsに追加します.これは,Org-modeの開始時には読み込まれないファイルにある関数を,Emacsが自動的に読み込むために必要です.

     (require 'org-install)

次節に解説されているOrg-modeのアクティベーションを忘れずに実行してください.


Next: , Previous: インストール, Up: まえがき

1.3 アクティベーション

拡張子が.orgのファイルで必ずOrg-modeを利用することを確実にするために,次の行を.emacsに追加します.

     (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))

Org-modeのバッファは,フォントロックが有効になっている必要があります.これはEmacsの標準の設定です1

Org-modeの4つのコマンド(org-store-link, org-capture, org-agenda, org-iswitchb)は,グローバルキーを割り当てて使いやすくするべきでしょう(つまり,Org-modeのバッファだけではなく,Emacsでいつでも使えるようにします.).これらのキーバインドとして以下を割り当てることをお勧めします.自分の環境に応じて適当にキーを変更してください.

     (global-set-key "\C-cl" 'org-store-link)
     (global-set-key "\C-cc" 'org-capture)
     (global-set-key "\C-ca" 'org-agenda)
     (global-set-key "\C-cb" 'org-iswitchb)

ここまでの設定を用いると,拡張子が‘.org’のファイルのすべてがOrg-modeに設定されます.別の方法として,ファイルの一行目に次のような一文を追加することでも,Org-modeに設定できます.

     MY PROJECTS    -*- mode: org; -*-

この設定が書き込まれたバッファは,ファイルの名前とは無関係にOrg-modeが有効になります.変数org-insert-mode-line-in-empty-fileも確認してください.

Org-modeの多くのコマンドは,リージョンがアクティブならば、そのリージョンに対して動作します.アクティブなリージョンをハイライトするためには,transient-mark-mode(XEmacsではzmacs-regions)を有効にする必要があります.Emacs23では標準で有効になっていますが,Emacs22では次のように自分で設定する必要があります.

     (transient-mark-mode 1)

もしtransient-mark-modeが好みでないならば,マウスを利用した領域の選択で,アクティブなリージョンを指定できます.もしくは,カーソルを移動する前にC-<SPC>を二回押します.


Next: , Previous: アクティベーション, Up: まえがき

1.4 フィードバック

Org-modeで問題を発見した場合,あるいは質問や意見,アイディアがある場合には,Org-modeのメーリングリストemacs-orgmode@gnu.orgへメールしてください.あなたがメーリングリストのメンバーでないと,投稿したメールは管理者が承認した後にメーリングリストへ転送されます2

バグをレポートする時は,まず始めに最新バージョンのOrg-modeを利用して該当のバグが再現されるか試してください.古いバージョンを利用している場合,すでにそのバグが修正されている可能性が高いです.バグの再現性が確認できたならば,レポートを準備して可能な限り多くの情報を提供してください.具体的には,Emacsのバージョン情報(M-x emacs-version <RET>)とOrg-modeのバージョン情報(M-x org-version <RET>),また,Org-modeに関連する.emacsの設定をバグレポートに記載してください.このようなバグレポートの形式を守るための最も簡単な方法は,次のコマンドを利用することです.

     M-x org-submit-bug-report

この関数を実行すると,Emacsのメールバッファに必要なテンプレートを書きこんでくれるので,バグの説明だけを書き加えればよい状態になります.Emacsを利用してメールを送信しない場合は,テンプレートの内容をメールクライアントにコピー&ペーストしてください.

もしOrg-modeを使っていてエラーが発生したら,バックトレースがとても役立ちます(作り方は次節を参照してください).しばしば例となる小さなファイルが問題解決の手助けになります.それらには次のような明瞭な情報を含んでいます.

  1. 正確に何を実行したのか
  2. 何が起きることを期待していたのか
  3. 期待と異なり何が起こったのか
Org-modeの改善にご協力いただき感謝します.
有用なバックトレースを生成する方法

Org-modeを利用していて理解できないメッセージのエラーが発生したら,バグを発見した可能性があります.エラーを報告する最良の方法は,すでに説明したバグレポートの書式に加えて,backtraceを提供することです.バックトレースは,ビルトインされたデバッガによるエラーの発生箇所とどのように発生したかについての情報を含みます.以下に,有用なバックトレースを生成する手順を示します.

  1. コンパイルされていないOrg-modeのLispファイル群を再度読み込みます.コンパイルされていないコードを利用して生成したバックトレースは,より多くの情報を含みます.そのために,次のコマンドを実行します.
              C-u M-x org-reload RET
    

    もしくは,Org -> Refresh/Reload -> Reload Org uncompiledをメニューから選択します.

  2. オプションメニューOptionsから,Enter Debugger on Errorを選択します(XEmacsでは,このオプションはTroubleshootingサブメニューにあります).
  3. エラーを再現するために必要な操作を行なってください.実行した操作を忘れずにメモしておいてください.
  4. エラーが再現されると,*Backtrace*バッファが画面上に表示されます.このバッファを別のファイルとして保存し(例えばC-x C-wを使って),バグレポートに添付します.


Previous: フィードバック, Up: まえがき

1.5 本マニュアルで使われる植字ルール

Org-modeは,3種類のキーワードを使います.TODOキーワード,タグ,プロパティです.このマニュアルでは次のように植字を使い分けます.

TODO
WAITING
TODOキーワードは,すべて大文字で記述されます.ユーザーが定義する場合も同様です.
boss
ARCHIVE
ユーザー定義のタグは,小文字で記述されます.特別な意味を持つビルトインされたタグは,すべて大文字で記述されます.
Release
PRIORITY
ユーザー定義のプロパティは,大文字で始めて残りが小文字で記述されます.特別な意味を持つビルトインされたプロパティは,すべて大文字で記述されます.

このマニュアルでは,Org-modeの機能を利用するためのキーバインドと,対応するコマンドの両方を表記します.Org-modeは,しばしば異なる関数に対して同じキーバインドを使います(これはコマンドを利用する状況に依存しています).そのようなキーバインドが割り振られたコマンドには,org-metarightのような一般的な名称があります.このマニュアルでは,可能な限り一般的なコマンドを用いて内部的に呼び出される関数の名称を提示します.例えば,ドキュメントの構造についての章では,M-<right>org-do-demoteを呼び出すように表記します.一方で,テーブルについての章では,org-table-move-column-rightを呼び出すように表記します.

もし望むならば,org.texiにあるcmdnamesフラグの設定を外すことで,コマンドの名称を表示しないようにマニュアルをコンパイルできます.


Next: , Previous: まえがき, Up: Top

2 ドキュメントの構造

Org-modeは、Outline modeをベースとしており、ドキュメントの構造を編集するためにフレキシブルなコマンドを用意しています。


Next: , Previous: ドキュメントの構造, Up: ドキュメントの構造

2.1 アウトライン

Org-modeはoutline modeの上で実行されます。アウトラインによって階層構造で体系化されたドキュメントが作られ、(少なくとも私にとっては)それによって、ノートや思考の最高の表現方法となります。ドキュメントの大きな部分を折りたたむ(隠す)ことによって、ドキュメントの骨格のみを表示したり、現在、作業している部分を表示したりして、ドキュメントの構造の全体を見渡すことができるのです。Org-modeは、全体を表示したり/隠したりする機能を、たったひとつのコマンド、org-cycle、それは<TAB>キーと結びついていますが、に圧縮することにより、アウトラインの使用を大変単純なものにしています。


Next: , Previous: アウトライン, Up: ドキュメントの構造

2.2 ヘッドライン

見出しは、アウトラインのツリーの構造を定義します。Org-modeの見出しは、左のマージン3上にある1つもしくはそれ以上の数の「*」で始まります。例えば。

     * Top level headline
     ** Second level
     *** 3rd level
         some text
     *** 3rd level
         more text
     
     * Another top level headline

たくさんの「*」があるとうるさく感じ、空白のあとに、見出しの始まりとしてのひとつの「*」があるという形式のアウトラインを好む人もいるでしょう。このような形式の設定について、アウトラインの「*」を取り除く,で説明しています。

最後のサブツリーの直後の空白行は、そのサブツリーの一部と見なされます。そのためサブツリーが折り畳まれたときには、隠れてしまいます。しかしながら、すくなくとも2行の空白行を残したときは、折り畳んだビューを構造化するために、サブツリーを折り畳んだあとも、1つの空白行は残ったままになります。この動作を修正したいときは、org-cycle-separator-linesを参照してください。


Next: , Previous: ヘッドライン, Up: ドキュメントの構造

2.3 表示、非表示の切り替え

アウトラインによって、バッファの中で、テキストの一部を隠すことが可能となります。Org-modeはバッファ内での表示の状況を変更するために、<TAB>とS-<TAB>とに結びついた2つのコマンドを使用します。

<TAB>     (org-cycle)
Subtree cycling:カレントのサブツリーの状態を順番に表示します。
          ,-> FOLDED -> CHILDREN -> SUBTREE --.
          '-----------------------------------'

これを動作4 させるためにはカーソルが見出しの上に置かれている必要があります。カーソルがバッファの一番上の行にあり、そして最初の行が見出しでない場合は、<TAB>が実際にグローバルな切り替えが実行されます。(下記を参照)5 前置引数(C-u <TAB>)をつけて呼び出したときは、グローバルな切替が実行されます。


S-<TAB>     (org-global-cycle)
C-u <TAB>
Global cycling:バッファ全体を交代で状態を変更する。
          ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
          '--------------------------------------'

S-<TAB>がNという数字のついた前置引数と一緒に呼び出されたときは、レベルN以上の見出しがCONTENTSビューに表示されます。テーブルの中では、S-<TAB>は前のフィールドにジャンプするということに注意してください。


C-u C-u C-u <TAB>     (show-all)
全てを表示する。引き出しを含む。 C-r
C-c
C-r     (org-reveal)

カレントエントリーや、下の見出しや上の階層を表示して、その場所でのコンテクストを表示する。ツリーの抽出コマンド(see ツリーの抽出)やアジェンダのコマンド(see アジェンダのコマンド)によって表示された場所の周辺で作業をするのに役立ちます。前置引数をつけることで、各階層での同一レベルの見出しを表示する。前置引数を2重に使った場合は、親のサブツリー全体を表示する。

C-c C-k     (show-branches)
サブツリーの見出しを全て表示し、ひとつのサブツリーのためのコンテンツビューである。b
C-c C-x
b     (org-tree-to-indirect-buffer)  間接的なバッファ6. の中にあるカレントのサブツリーを表示する。Nという数値付きの前置引数をつけると、N段階上の階層に上がるがそのツリーを捉える。もしもNがマイナスの値ならば、多くの階層まで遡る。C-uの前置引数をつけたならば、それ以前に使用された間接的なバッファを削除してはならない。

EmacsであるOrg-modeファイルを最初に開いたときに、グローバルな状態としては、概観のビューで開くように設定されています。すなわち、最上位の階層の見出しのみが表示されています。これは、org-startup-folded変数によって設定されています。つまり、以下に示す行をバッファ上のどこかに追加することによって、ファイル毎に設定することができます。

     #+STARTUP: overview
     #+STARTUP: content
     #+STARTUP: showall
     #+STARTUP: showeverything

さらに、どのエントリーも‘VISIBILITY’属性(see プロパティとカラム)を持っており、それを受けて適用された表示性をしめすでしょう。この属性のために許されている値は、foldedchildrencontentおよびallです。

<TAB>
C-u C-u
<TAB>     (org-set-startup-visibility)  そのバッファにおける起動時の表示条件に戻ります。すなわち、起動時のオプションで要求されている内容、そして個々のエントリーの中で設定されている‘VISIBILITY’の属性に。


Next: , Previous: 表示、非表示の切り替え, Up: ドキュメントの構造

2.4 移動

以下のコマンドはバッファの中で他の見出しにジャンプするものです。

C-c C-n     (outline-next-visible-heading)
 次の見出しへ。C-p
C-c
C-p     (outline-previous-visible-heading)  前の見出しへ。C-f
C-c
C-f     (org-forward-same-level)  次の同一階層の見出しへ。C-b
C-c
C-b     (org-backward-same-level)  前の同一階層の見出しへ。C-u
C-c
C-u     (outline-up-heading)  一つ上の階層の見出しに戻る。C-j
C-c
C-j     (org-goto)  現在のアウトラインの表示状態を変更することなく、別の場所にジャンプする。現在のバッファの中で文書の構造を表示し、そこではあなたの目的の場所を見つけるために以下のようなキーを使用することができます。
          <TAB>         表示を切り替える。
          <down> / <up>   次の/前の表示されている見出しへ。
          <RET>         この場所を選択する。
          /           ツリーの抽出による検索を実行する
          もしもorg-goto-auto-isearch を停止したときには以下のキーが動作する
          n / p        次の/前の表示されている見出しへ。
          f / b        次の/前の同じ階層の見出しへ。
          u            ひとつ上の階層へ。
          0-9          数値の変数。
          q            停止

org-goto-interface変数もまた参照のこと。


Next: , Previous: 移動, Up: ドキュメントの構造

2.5 見出し位置と階層の変更

M-<RET>     (org-insert-heading)
カレントの階層と同じ階層の新しい見出しを挿入します。もしもカーソルがプレーンなリストアイテムの中にあるならば、新しいアイテムが作成されます(see エントリー中の階層構造)。新しい見出しを強制的に作成するには前置引数をつけます。このコマンドが行の途中で使用されたときは、その行が分割され、その行の残りの部分が新しい見出し7となります。もしも見出しの先頭でそのコマンドが使用されたときは、カレント行の前に新しい見出しが作られます。もしも見出し以外の行の先頭の場合は、その行の内容が新しい見出しとして作成されます。そのコマンドが折り畳まれているサブツリーの行末で使用されたならば(i.e. 見出しの最後の楕円の後)、カレントの見出しと同様な見出しが、サブツリーの末尾の後に挿入されるでしょう。
C-<RET>     (org-insert-heading-respect-content)
M-<RET>とちょうど同じように、カレントの見出しの下に新しい見出しが付け加えられたときを除いて、新しい見出しは本文の前に置かれるかわりに、本文の後に置かれます。このコマンドはエントリーの中のどの場所からでも動作します。
M-S-<RET>     (org-insert-todo-heading)
カレントの見出しと同じ階層の新しいTODOエントリーが挿入されます。org-treat-insert-todo-heading-as-state-change変数も同じように参照してください。
C-S-<RET>     (org-insert-todo-heading-respect-content)
カレントの見出しと同一の階層に新しいTODOエントリーを挿入します。C-<RET>と同様に、新しい見出しはカレントのサブツリーの後に挿入されるでしょう。
<TAB>     (org-cycle)
新しいエントリーでまだ文が書かれていない状態で、最初に<TAB>を実行すると、そのエントリーの階層を下げ、その前の見出しの子になります。次に<TAB>を実行すると、その見出しを親として、それによってトップの階層まで、作成します。さらに次の<TAB>で、初期の階層にもどります。
M-<left>     (org-do-promote)
カレントの見出しを1階層上げる。
M-<right>     (org-do-demote)
カレントの見出しを1階層下げる。
M-S-<left>     (org-promote-subtree)
カレントのサブツリーを1階層上げる。
M-S-<right>     (org-demote-subtree)
カレントのサブツリーを1階層下げる。
M-S-<up>     (org-move-subtree-up)
サブツリーを上に移動する。(同じ階層の前のサブツリーと交換する。)
M-S-<down>     (org-move-subtree-down)
サブツリーを下に移動する。(同一階層の次のサブツリーと交換する。)
C-c C-x C-w     (org-cut-subtree)
サブツリーをキルする。i.e. そのサブツリーをバッファから取り除くが、キルリングに保存する。Nという数字付きの前置引数をつけたときは、N個連続でサブツリーをキルする。C-x M-w
C-c
C-x M-w     (org-copy-subtree)

サブツリーをキルリングにコピーする。Nという数字付きの前置引数をつけたときは、N個連続でサブツリーをコピーする。C-y

C-c C-x
C-y     (org-paste-subtree)

キルリングからサブツリーを貼り付ける。これによると、貼り付けるポジションにうまく合わせて、ツリーに適合するようにサブツリーの階層を調整する。数字付きの前置引数をつけるか、‘****’のような星印のついた見出しの後に貼り付けることによって、貼り付ける階層を指定することができる。

C-y     (org-yank)
org-yank-adjusted-subtreesorg-yank-folded-subtreesという変数によって、Org-modeの内部のyankコマンドは、賢い方法で、C-c C-x C-yと同等のコマンドを用いて、折り畳まれているサブツリーを貼り付けることができるでしょう。デフォルトの設定では、階層の調整は行われませんが、貼り付けられたツリーは、既に表示されているテキスト受け入れない限り、折り畳まれたままでしょう。このコマンドに対して何らかの前置引数をつけることで、渡されたプレフィックスに応じて、通常のyankを実行させることになります。通常のyankを実行する良い方法はC-u C-yです。yankの後でyank-popを使うと、階層の調整や折り畳みをすることなく、それ以前にkillしたアイテムをプレーンにyankします。C-x c
C-c
C-x c     (org-clone-subtree-with-time-shift) たくさんのそれと同じ兄弟のコピーを作成することで、サブツリーの複製を作ります。たくさんのコピーの作成を実行したいならば、そのエントリーに含まれているタイムスタンプも調整されるように指定することもできます。この機能は便利です。例えば、準備している一連の講義に関連した沢山のタスクを作成するという場合のように。もっと詳細な情報が必要ならば、org-clone-subtree-with-time-shiftコマンドの解説を参照してください。C-w
C-c
C-w     (org-refile) エントリーやリージョンを別の場所に保管します。See ノートの再配置.^
C-c
^     (org-sort-entries-or-items) 同じ階層のエントリーを並び替えられます。アクティブなリージョンがあるときに、そのリージョンにあるすべてのエントリーは順番に並びます。もう一方で、カレントの見出しの子供の階層も並び替えられます。並び替えの形式をコマンドで入力します。すなわちアルファベット順、数字順、時間順(実行するために参照される作成日、予定日、期限などの最初のタイムスタンプ)、優先順位順、TODOキーワード順(設定の中で定義された一連のキーワードの中で)あるいは属性の価値の順に並べ替えるために。並び順を反転することも同様に可能です。並び替えのキーを拡張するために自分自身の関数を用意することもできます。C-u C-uという二重の前置引数を使用すると、複製されたエントリーは削除されます。s
C-x n
s     (org-narrow-to-subtree) カレントのサブツリーのためにバッファをナローイングします。b
C-x n
b     (org-narrow-to-block) カレントのブロックのためにバッファをナローイングします。
C-x n w     (widen)
ナローイングを取り除きバッファを広げます。
C-c *     (org-toggle-heading)
普通の行やプレーンなリストアイテムを見出しに変更します。(そのため、それらの場所によってはサブの見出しになります。)星汁うぃを取り除くことによって見出しを普通の行に変更することもできます。もしもアクティブなリージョンあるならば、その領域のすべての行が見出しに変更されます。もしもその領域の中の最初の行がアイテムだったら、そのアイテムの行のみが見出しに変更されます。最後に、もし最初の行が見出しならば、その領域の中の全ての見出しから星印が取り除かれます。

アクティブなリージョンがあるときには(Transient Mark mode)、そのリージョンのすべての見出しの階層を上げたり、下げたり作用することができる。あるリージョンの見出しを選択するためには、行の先頭にポイントを置いてマークし、最初の見出しの先頭でマークし、変更する最後の見出しの次の行にポイントを置くのが良い方法である。カーソルがテーブル (see テーブル)の中にあるときに、Meta-Cursorキーは異なる機能性を持つことに注意してください。


Next: , Previous: 見出し位置と階層の変更, Up: ドキュメントの構造

2.6 ツリーの抽出

Org-modeの重要な特徴の一つに、あるアウトラインのツリーに含まれている選択された情報のためにsparse trees(ツリーの抽出)を作ることができるということがあります。そのため文書全体が最大限畳まれていても、その8 上に見出し構造に沿って表示することができるのです。試してみて、それがどんなに素早く動作するかを見てください。

Org-modeにはそういうツリーを作成するためのいくつものコマンドがあります。これらのコマンドの全てはディスパッチャーを通してアクセスすることができます。

C-c /     (org-sparse-tree)
これは、ツリーの抽出を選択するためのコマンドを作成する追加のキーを入力する。
C-c / r     (org-occur)
発生。正規表現のための入力と全ての一致したものについてのツリーの抽出を表示する。もしもその一致した言葉が見出しの中にあるならば、その見出しが表示される。もしもその一致した言葉がエントリーの本文の中にあるならば、見出しと本文が表示される。最小の内容を区分するために、その一致した言葉のある見出しの階層全体が表示され、同様にその一致した言葉に続く見出しも表示される。どの一致した言葉もハイライトされる。そのハイライトはバッファが編集コマンド9  によって変更されるか、C-c C-cを押すことで消える。C-u前置引数が呼ばれたときは、以前のハイライトは維持される。そのため何度もこのコマンドを呼び出すと積み重ねることができる。n
M-g
n or M-g M-n     (next-error) そのバッファの中の次のツリーの抽出部分にジャンプする。M-p
M-g p or M-g
M-p     (previous-error)  そのバッファの前のツリーの抽出部分にジャンプする。

特定の検索文字列によるツリーの抽出を何度も使用するために、org-agenda-custom-commands変数を使って特定のツリーの抽出に、素早くキーボードからアクセスする定義をすることができる。これらのコマンドはアジェンダディスパッチャー(see アジェンダのコマンド選択)を通してアクセスすることができる。例えば。

     (setq org-agenda-custom-commands
           '(("f" occur-tree "FIXME")))

FIXME’という文字列にマッチするツリーの抽出するためのショートカットとして、C-c a fを定義します。

他のツリーの抽出のためのコマンドは、TODOキーワード、タグ、あるいは属性に基づいて見出しを選択するもので、このマニュアルの後の部分で議論されるだろう。

抽出したツリーを印刷するためには、Emacsのps-print-buffer-with-facesというコマンドを使用することができます。それを使うと文書10のうちの表示されていない部分は印刷されません。あるいは、文書の見えている部分をエクスポートするために、C-c C-e vコマンドを使用し、エクスポートしたファイルを印刷することができます。


Next: , Previous: ツリーの抽出, Up: ドキュメントの構造

2.7 エントリー中の階層構造

アウトラインのエントリーの中に、手動でフォーマットしたリストによって、別の構造化された項目を追加することができます。そのリストを使って、チェックボックス(see チェックボックス)のリストを作成する方法が提供されています。Org-modeではそういうリストの編集をサポートしており、そしてすべてのエクスポート機能(see エクスポート)はそれらのリストの構文を解析しフォーマット化することができます。

Org-modeでは、数字付きのリスト、順序のないリスト、そして記述リストを解釈します。

同じリストに属しているアイテムは、最初の行と同じインデントでなければならない。特に、もしも順番のついたリストが‘10.’番に到達したら、その2つの数字の番号は、そのリストの中の他の番号とおなじく左寄せで書かれなければなりません。アイテムは、次の行が、そのbullet/数字よりも少ないか等しいインデントの場合の前までで終わります。

リストを終わらせるために2つの方法15 が用意されています。ひとつのリストは、それぞれのアイテムが終了すると終わります。そのことは、トップのレベルのアイテムよりも少ないか等しいインデントの行の前までであるということを意味しています。また、空行16 が2行あると終了します。その場合、すべてのアイテムが閉じていることになります。うまく管理するには、org-list-end-regexpの中のどれかのパターンの設定でリストを終わることです。事例を紹介します。

     ** ロードオブザリング
        渡しの大好きなシーンは (この順で)
        1. the Rohirrimの攻撃
        2. Eowynが魔法使いの王と一緒に戦うところ
           + これはもともと本を読んだときも私のお気に入りのシーンだった
           + 私はMiranda Ottoが本当に好きだ。
        3. Peter JacksonがLegolasに撃たれる
           - DVDだけで
           そのとき彼は本当に面白い顔をした。
        しかし、結局、映画全体を通して個性的なシーンがない。
        この映画での重要な俳優は:
        - Elijah Wood :: Frodo役
        - Sean Austin :: Sam役, Frodoの友達。私は今でもThe Goonies
          の中でMikey Walsh役として素晴らしい役回りを演じたことを覚えている。

Org-modeでは、これらのリストを正しく17取り扱うために、埋め込んだり包んだりするコマンドをチューニングし、適切にエクスポートする(see エクスポート)ことによって、これらのリストに対応しています。これらのリストの構造を管理しているのがインデントであるため、#+BEGIN_...ブロックのような多くの構造的な構成を、特別なアイテムに帰属しているという目印のためにインデントを設定することができます。

(カレントのリストの階層のために使用するというよりも)サブリストのために、異なるbulletを使うことが読みやすくできると思ったら、org-list-demote-modify-bullet変数をカスタマイズしてください。

あるアイテムの最初の行(bulletまたは数字のついている行)にカーソルがあるときに、以下のコマンドがアイテムに作用します。それらのコマンドのいくつかは、リストの構造を完全なままたもつために自動的なルールのアプリケーションであることを暗示しています。これらのコマンドの動作のいくつかを独自のやりかたにしたいならば、それらを個別に無効にするために、org-list-automatic-rulesを設定してください。

<TAB>     (org-cycle)
アイテムは見出しの階層と同じように折り畳むことができます。通常これらはカーソルがプレーンなリストアイテムの上にあるときに限り動作します。もっと詳しく理解するには、org-cycle-include-plain-lists変数を参照してください。もしもこの変数がintegrateに設定されているときは、プレーンなリストアイテムは下の階層の見出しと同様に取り扱われます。そのため筆のアイテムの階層はbulletまたは数字のインデントによって決定されます。アイテムは実際の見出しに常に従属しているのです。しかしながら、階層構造は完全に区別されたままになります。
M-<RET>     (org-insert-heading)
新しいアイテムをカレントの階層に挿入します。前置引数を用いると、新しい見出し (see 見出し位置と階層の変更.)となります。もしもこのコマンドがアイテムの途中で使用されるならば、そのアイテムは2つに分割 されます。そして2番目の部分は新しいアイテム18となります。もしもこのコマンドが、本文の前で実行されるならば、新しいアイテムは、カレントのアイテムの前に作成されます。
M-S-<RET>
チェックボックス(see チェックボックス)のついた新しいアイテムを挿入します。
<TAB>     (org-cycle)
テキストがまだ書かれていない新しいアイテムの中で、最初の<TAB> でそのアイテムをその前のアイテムの子の階層に移動します。それに続けて<TAB>を入力していくと、そのアイテムをリスト上で意味のある階層に移動し、そして最終的にもとあった一に戻ります。
S-<up>
S-<down>
カレントのリストの中で、前の/次のアイテムにジャンプします。ただしorg-support-shift-select がオフになっている時だけです。もしもそうなっていないなら、C-<up>C-<down>のようなパラグラフのジャンプコマンドと全く同様の効果が現れるように使用することができます。
M-S-<up>
M-S-<down>
サブアイテムを持っているアイテムを上下(同じインデントのついたアイテムの前後と入れ替わる)に移動します。もしもリストに序列があるならば、自動的に採番しなおします。
M-<left>
M-<right>
一つのアイテムのインデントを増減します。子のアイテムを残したままで。
M-S-<left>
M-S-<right>
サブアイテムを含んだまま、アイテムのインデントを増減します。初期設定では、アイテムのツリーはカレントのインデントに基づいて選択されます。直接連続してこれらのコマンドが何度も実行されたときは、たとえ新しいインデントが異なる階層であるとわかっていても、初期に選択されたリージョンが使用されます。新しい階層を使用するために、カーソルを移動させるコマンドの連鎖をブレイクする必要があります。

特別な場合として、リストの本当に最初のアイテムの上で、このコマンドを使用することで全てのリストを動かすことができます。この動作はorg-list-automatic-rulesを設定することで無効にすることができます。あるリストのグローバルなインデントは、そのリストの後のテキストにはなんの影響も与えません。

C-c C-c
アイテムの行にチェックボックス(see チェックボックス)がある場合には、チェックボックスの状態を切り替えます。ともかく、リスト全体についてbulletとインデントの整合性を検証します。
C-c -
org-plain-list-ordered-item-terminatorの設定により、異なる箇条書き/番号付きのbullet(‘-’, ‘+’, ‘*’, ‘1.’, ‘1)’) 、またはそれらのサブセットをもとにして全体のリストの階層、リストのタイプ、リストの位置19を切り替えます。Nという数字の付いた前置引数を使用すると、これらのリストの中のN番目のbulletが選択されます。もしも、このコマンドを呼び出したときにアクティブなリージョンがあるならば、選択された文章は普通のアイテムに変更されます。前置引数を使うと、すべての行がリストアイテムに変換されます。もしも最初の行がすでにリストアイテムだったならば、どのアイテムの符号もリストから削除されるでしょう。最後に、アクティブなリージョンでない場合でも、リストアイテムに変換されます。
C-c *
プレーンなリストのアイテムを見出しに変更します(そのロケーションによってはサブの見出しになることもあります。)See 見出し位置と階層の変更.、ここに詳しい説明があります。
C-c C-*
プレーンなリスト全体を可憐との見出しのサブツリーに変換します。チェックボックス(see チェックボックス)は、チェックされていないとき(またはチェックされているとき)はTODO(またはDONE)キーワードになるでしょう。
S-<left>/<right>
bullet上、またはアイテムの行のどこかにカーソルが置かれているときに、このコマンドは、また、bulletのスタイルを切り替えます。詳細はorg-support-shift-selectに依存します。
C-c ^
プレーンなリストを並び替えます。次の並び替えの方法を入力します。数字順、アルファベット順、時間順、あるいはカスタムな機能の順番に。


Next: , Previous: エントリー中の階層構造, Up: ドキュメントの構造

2.8 引き出し

あるエントリーに関連する情報を保持していたいときがあるが、普段はその情報を見たくはないということがあります。こういうときのために、Org-modeは引き出しという機能を持っています。引き出しはorg-drawers20変数で設定する必要があります。引き出しはこんな形をしています。

     ** これは見出しです
        ここはまだ引き出しの外側です
        :DRAWERNAME:
        これは引き出しの内側です。
        :END:
        引き出しの後です。

見出し上で表示の切り替え(see 表示、非表示の切り替え)を行うとエントリーを隠したり表示したりすることができますが、引き出しの部分は1行に畳まれたままの状態になります。引き出しの中身を見るためには、カーソルを引き出しの行に移動し、そこで<TAB>キーを押すことが必要です。Org-modeは属性(see プロパティとカラム)を保持するために、PROPERTIESという引き出しを使用します。そしてノート(see 作業の状態変化の追跡)と時刻(see 作業に費やした時間の計測)の変化の状態を用意するためにLOGBOOKという引き出しの中に保存をすることができます。もしも、状態の変化のためと似たような方法で素早くノートをLOGBOOKの引き出しに保存したいときには、このように使います。

C-c C-z
LOGBOOKのための引き出しにタイムスタンプ付きのノートを追加します。


Next: , Previous: 引き出し, Up: ドキュメントの構造

2.9 ブロック

Org-modeはソースコードの例(see リテラルの例) から時刻のログ情報(see 作業に費やした時間の計測)を記録することまで、いろいろな目的のために、begin...endというブロックを使用します。このブロックでは、行の先頭でTABを押すことによって、折り畳んだり、折り畳みを解いたりすることができます。org-hide-block-startup変数を設定するか、以下のようなファイル毎の設定をすることで、起動時に全てのブロックを折り畳んでおくこともできます。

     #+STARTUP: hideblocks
     #+STARTUP: nohideblocks


Next: , Previous: ブロック, Up: ドキュメントの構造

2.10 脚注

Org-modeは脚注の作成をサポートしています。Org-modeは、footnote.elパッケージと対照的に、1回限りのEメールのような文書だけでなく、大きな文書上で動作するよう設計されています。基本構文はfootnote.elの構文で使われているのと良く似ており、i.e.インデントが認められていない、カラム0の角カッコの中の脚注の印によって始まるパラグラフの中で定義されます。もしも脚注の中でパラグラフを改行したいならば、LaTeXの用語である‘\par’を使用します。脚注の参照は、テキストの中の単純な角カッコの中の記号です。例えば。

     Org-modeのホームページ[fn:1] は以前に比べて現在は相当改良されていると思います。
     ...
     [fn:1] リンク先は: http://orgmode.org

Org-modeでは数字をベースとした構文を、名前のついた脚注とオプションのインラインでの定義へと拡張しています。プレーンな数字を(footnote.elで行えるように)マーカーとして使うことは、下位の互換性としてサポートされていますが、LaTeXのsnippet(see LaTeXの組み込み)と衝突する危険性があるのでお奨めはできません。以下に確かな参考資料を説明します。

[1]
プレーンな数字付きの脚注用の記号です。footnote.elと互換性はありますが、‘[1]’のような記号は、snippetのコードとかぶることが多いので推奨しません。
[fn:name]
名前付きの脚注参照、そこではnameがユニークな言葉によるラベルとなっており、さもなければ簡単に自動的に作成される、数字が用いられます。
[fn:: これは脚注のインラインの定義です]
参照のポイントに直接定義がなされるLaTeXのような無記名の脚注。
[fn:name: a definition]
脚注のインラインでの定義、それはまた、ノートのための名前を明確に規定します。Org-modeは同じノートに対して多重の参照を許容するので、新たな参照を作成するために、[fn:name]を使用することができます。

脚注のラベルは自動的に作成することができます。そうしないならば、あなた自身で名前を作成することができます。これはorg-footnote-auto-label変数で操作され、#+STARTUPキーワードに対応します。詳細については変数の説明を参照してください。

以下のコマンドはプロパティを操作する助けとなります。

C-c C-x f
脚注の動作のコマンド。

カーソルが脚注参照上にあるときに、定義部分にジャンプします。カーソルが定義部分にあるときに、(最初の)参照されている部分にジャンプします。

そうでなければ、新しい脚注を作成します。org-footnote-define-inline21によって、参照の一部として、または、org-footnote-section変数によって決定される場所の中に区分されて、テキストの中に正しく定義が配置されるでしょう。

前置引数と一緒にコマンドが呼び出された場合は、追加のオプションのメニューが提示されます。

          s   参照の順場によって、脚注の定義は並び替えられます。編集している間は、
              Org-modeは特定の並びの中に脚注の定義を並び替える努力はしません。
              もしもそれらを並び替えたいならば、このコマンドを使用してください。
              それによってorg-footnote-sectionに従ってエントリーをまた移動します。
              挿入/削除のあとに自動的に並び替えるには、変数を使うことで設定する
              ことができます。
          r   単純なfn:N の脚注を思い出してください。挿入/削除それぞれのあとの
              自動的な採番は、org-footnote-auto-adjust変数を使う
              ことで設定できます。
          S   最初のrのショートカットで、sはアクションです。
          n   すべての定義(インラインの定義もふくみます)を特別なセクションに集める
              ことによって脚注を標準化します。そしてそれからそれらの定義を順番に採番
              します。参照先にも番号がふられます。これは、ひとつのドキュメントを終了
              する前の最後の段階であることを意味します。(e.g. Eメールを発送する)。
              エクスポート機能はこのことを自動的に行い、
              message-send-hookのような何かを行います。
          d   そのポイント、およびそれについての参照先の定義を削除します。

org-footnote-auto-adjust22nofnadjustの変数に依存し、それぞれの挿入と削除のあとに、番号の振り直しと脚注の並び替えが自動的に行われます。


C-c C-c
もしもカーソルが脚注の参照の上にあるときは、定義部分に飛びます。もしもそれがある定義ならば、参照先にジャンプして戻ります。前置引数と一緒に、脚注の場所を呼び出すときに、C-c C-x fとして同じメニューが提供されています。
C-c C-o or mouse-1/2
脚注のラベルはまた、定義/参照先に対応してリンクを貼ります。そして通常のコマンドでこれらのリンクをフォローするための通常のコマンドを使用することができます。


Previous: 脚注, Up: ドキュメントの構造

2.11 The Orgstruct minor mode

もしもOrg-modeの構造の編集とリストのフォーマットの動作について直感的な方法を好むのならば、あなたはTextモードやMailモードと同じような他のモードのコマンドを使用したいと思うでしょう。orgstruct-modeというマイナーモードでそれが可能になります。M-x orgstruct-modeを使ってモードを切り替えるか、例えばMessageモードの中で、デフォルトでそれを作動させるか、次のいずれかを用いて、

     (add-hook 'message-mode-hook 'turn-on-orgstruct)
     (add-hook 'message-mode-hook 'turn-on-orgstruct++)

このモードがアクティブで、カーソルが見出しやリストアイテムの最初の行のようなOrg-modeのような行の上にあるときには、ほとんどの構造の編集のためのコマンドは動作するでしょう。たとえ、あなたが使っているメジャーモードの中で、同じキーが普通に異なる機能を持っているとしても。もしもカーソルがそういった特別の行の一つの中に置かれていなくても、Orgstructモードは影の中で静かに隠れています。orgstruct++-modeを使ったときは、Org-modeは、それらのモードの中に、インデントやオートフィルの設定を書き出すでしょう。そして、アイテムの最初の行の後にアイテムのコンテクストを見つけるでしょう。


Next: , Previous: ドキュメントの構造, Up: Top

3 テーブル

Org-modeは,高速で直感的なテーブルエディタを備えています.Emacsのcalcパッケージを用いて,スプレッドシートのような計算機能に対応しています. (Emacs Calculatorの詳細は,同パッケージのマニュアルを参照してください.)


Next: , Previous: テーブル, Up: テーブル

3.1 組み込まれたテーブルエディタ

Org-modeを使うと,プレーンなASCII形式のテーブルを手軽に編集できます.空白文字を除いて,最初の文字が‘|’であれば,どの行もテーブルの一部であるとみなされます.‘|’は,列を区分するセパレータとしても使われます.Org-modeのテーブルは,次のような見た目になるでしょう.

     | Name  | Phone | Age |
     |-------+-------+-----|
     | Peter |  1234 |  17 |
     | Anna  |  4321 |  25 |

テーブルの中で,<TAB>や<RET>もしくはC-c C-cを押す度に,テーブルの表示が自動的に更新されます.<TAB>を押すとカーソルが次のフィールドに移ります(<RET>の場合は次の行へ).また,テーブルの端もしくは水平ラインの直前の行で押せば,テーブルに新しい行が追加されます.テーブルのインデントは一行目で決定されます.‘|-’で開始するどんな行も水平ラインとして解釈され,次にテーブルが更新される時に,水平ラインはテーブル幅いっぱいに拡張されます.つまり,上記のテーブルを作成するためには,次のように入力するだけでよかったのです.

     |Name|Phone|Age|
     |-

続いて<TAB>を押してテーブルを整列し,フィールドへの入力を始めます.さらに素早いテーブルの作成方法は,|Name|Phone|Ageに続いてC-c <RET>と入力することです.

フィールドに文字を入力すると,Org-modeは<DEL>と<Backspace>,また,すべての文字キーを特別な方法で扱います.文字の挿入と削除によって他のフィールドがズレてしまうことを避けるためです.また,<TAB>S-<TAB>もしくは<RET>によって,カーソルが新しいフィールドへ移動した直後に文字を入力すると,自動的に空白文字が挿入されます.この動作が気に入らない場合には,変数org-enable-table-editororg-table-auto-blank-fieldを調節してください.

テーブルの作成と変換
|
C-c
|     (org-table-create-or-convert-from-region)

アクティブリージョンをテーブルに変換します.全ての行が少なくとも一つのタブを含んでいるならば,この関数は処理対象をタブ区切りの表であると想定します.また,全ての行がコンマを含んでいるならば,コンマ区切り(いわゆるCSV)であると想定されます.それ以外の場合は空白文字で区切られていると想定します.プレフィックスを用いることで,区切り文字を強制的に指定できます.すなわち,C-uでCSV,C-u C-uでTAB区切りを指定できます.また,プレフィックスの引き数として整数値Nを用いれば,少なくともN個の連続した空白を区切りとして指定できます.条件に合わなければ,TABが代わりの区切りとして使われるでしょう.
もしアクティブリージョンが存在しないならば,このコマンドは空のテーブルを生成します.しかし,|Name|Phone|Age <RET> |- <TAB>とタイプしてテーブルを作り始める方が簡単です.

テールの整列とフィールドの動き

C-c C-c     (org-table-align)
カーソルを動かさずにテーブルを整列します.
<TAB>     (org-table-next-field)
テーブルを整列して,カーソルを次のフィールドに移します.必要ならば新たな行を生成します.
S-<TAB>     (org-table-previous-field)
テーブルを整列して,カーソルを前のフィールドに移します.
<RET>     (org-table-next-row)
テーブルを整列して,次の行にカーソルを下げます.必要ならば新しい行を追加します.行頭もしくは行末にカーソルがあるときの<RET>は,NEWLINEを意味して,テーブルの分割に使われます.
M-a     (org-table-beginning-of-field)
フィールド内の文頭にカーソルを移動します.もしくは,前のフィールドの文頭に移動します.
M-e     (org-table-end-of-field)
フィールド内の文末にカーソルを移動します.もしくは,次のフィールドの文末に移動します.
テーブルの列と行の編集

M-<left>     (org-table-move-column-left)
M-<right>     (org-table-move-column-right)
カーソルがある列を左右に移動します.
M-S-<left>     (org-table-delete-column)
カーソル位置の列を削除します.
M-S-<right>     (org-table-insert-column)
カーソル位置の左に新しい列を追加します.
M-<up>     (org-table-move-row-up)
M-<down>     (org-table-move-row-down)
カーソル位置の行を上下に移動します.
M-S-<up>     (org-table-kill-row)
カーソル位置の行もしくは水平ラインを削除します.
M-S-<down>     (org-table-insert-row)
カーソル位置の上に新しい行を追加します.プレフィックスを使うと,カーソル位置の下に追加されます.-
C-c
-     (org-table-insert-hline)

カーソル位置の下に水平ラインを追加します.プレフィックスを使うと,カーソル位置の上に追加されます.<RET>

C-c
<RET>     (org-table-hline-and-move)

カーソル位置の下に水平ラインを追加して,カーソルを追加された水平ラインの次の行に移動します.^

C-c
^     (org-table-sort-lines)

リージョンに含まれるテーブルの各行をソートします.ポイントのある列の情報がソートに利用されます.また,ソート対象となる範囲は,最も近い水平ラインの行まで,もしくは,テーブル全体が指定されます.カーソル位置がテーブルの第一列よりも前にあるときは,ソートに利用する列を指定するためにプロンプトが表示されます.すでにアクティブリージョンが存在する場合,マークは第一行とソートに利用する列を指定して,同時にポイントは,ソート対象に含まれる最終行に位置しなければなりません.このコマンドは,ソートの種類(アルファベット順,数値順,もしくは時間順)を指定するためにプロンプトを表示します.プレフィックスを利用すると,大文字と小文字が区別されます.

リージョン

C-c C-x M-w     (org-table-copy-region)
テーブルの矩形領域を特別なクリップボードにコピーします.ポイントとマークは,矩形領域を構成する末端となるフィールドを決定します.アクティブリージョンがなければ,カーソル位置のフィールドだけをコピーします.この処理は,テーブルの水平ラインを無視します.C-x C-w
C-c
C-x C-w     (org-table-cut-region)

テーブルの矩形領域を特別なクリップボードにコピーし,領域内の全てのフィールドを空にします.つまりこれは「カット」操作です.C-y

C-c C-x
C-y     (org-table-paste-rectangle)

テーブルに矩形領域をペーストします.領域の左上がカーソル位置のフィールドに上書きされます.ペーストする領域に重なるすべてのフィールドは上書きされます.対象とするテーブルに矩形領域が合わないならば,必要に応じてテーブルは拡張されます.この処理は,テーブルの水平ラインを無視します.

M-<RET>     (org-table-wrap-region)
カーソル位置でフィールドの文字列を分割し,カーソル以降を一つ下のフィールドの文頭に移動します.アクティブリージョンが存在し,またポイントとマークの両方が同じ列にあるとき,列に含まれるテキストは,与えられた行数を最小化するように改行されます(訳注:余計な空白が消される).プレフィックスで指定する整数値は,希望する行数に合わせるために使われます(訳注:M行をN行に圧縮できます).もし選択領域がない状態でプレフィックスを指定すると,カーソル位置のフィールドは空白になり,元々あった文字列は一つ上のフィールドの文末に付け加えられます.
計算機能

C-c +     (org-table-sum)
カーソル位置の列,もしくは,アクティブリージョンで定められた矩形領域に含まれる数値を合計します.計算結果はエコー領域に表示され,C-yで挿入できます.
S-<RET>     (org-table-copy-down)
カーソル位置のフィールドが空白のとき,上にある空白でないフィールドから文字列をコピーします.空白でないときには,値を次の行のフィールドにコピーし,カーソルも移動させます.org-table-copy-incrementの値に依存して,フィールドが整数値のときは値を一つ増やしてからコピーされるでしょう.整数の値が大きすぎる場合は,値が増やされません.また,プレフィックスで0を用いれば,一時的に値の増加を防げます.このキーバインドは,shift-selectionと,これに関連するモードでも使われています(see 衝突).
その他の機能

C-c `     (org-table-edit-field)
専用のウィンドウでカーソル位置のフィールドを編集します.この機能は,フィールドの全体が表示されていない場合に便利です(see 列幅と整列).プレフィックスC-uを伴って関数が呼ばれると,フィールドの全ての内容が表示されます(訳注:フィールドの文字列が一部隠れている場合にだけ呼び出せる).そのためカーソル位置のフィールドをそのまま編集できます.
M-x org-table-import
ファイルをテーブルとしてインポートします.テーブルは,タブもしくは空白で区切られている必要があります.この機能は,例えば,スプレッドシートのテーブルやデータベースの情報をインポートするために利用します.というのも,一般的にこれらのプログラムが,タブ区切りのテキストフィールドを書き出せるためです.このコマンドは,ファイルの内容をバッファに挿入することで処理が始まり,その領域をテーブルに変換します.コンバータに与えられるすべてのプレフィックスは,セパレータを決定するために利用されます.|
C-c
|     (org-table-create-or-convert-from-region)

org-modeのバッファにテーブル状のテキスト(訳注:文字列がタブで区切られているテキスト領域など)をペーストすることでもorg-modeのテーブルを作成できます.C-x C-xでバッファにペーストされているテキストを選択して,C-c |でorg-modeのテーブルに変換します(前述のCreation and conversionを参照してください).

M-x org-table-export
テーブルをエクスポートします.エクスポートされるファイルでは,標準でタブ区切りが使われます.この機能は,例えば,スプレッドシートやデータベースプログラムと情報を交換するために使います.ファイルのエクスポートに使われるフォーマットは,変数org-table-export-default-formatで調節できます.また,ファイル名を指定するためにプロパティTABLE_EXPORT_FILEを利用でき,サブツリーでのテーブルエクスポートのフォーマットを指定するためにプロパティTABLE_EXPORT_FORMATを指定できます.エクスポートされるテーブルについて,org-modeはかなり一般的なフォーマットをサポートします.エクスポートのフォーマットは,Orgtblのラジオテーブルで使われているものと同じです.より詳しい説明は変換関数を参照してください.

|’で始まる行を思い通りに編集するため,自動的なテーブルの編集が好みでない場合は,次のコマンドでこの機能を停止できます.

     (setq org-enable-table-editor nil)

こうすると,テーブルのコマンドで利用できるのは,C-c C-cによる手動の再整列だけになります.


Next: , Previous: 組み込みのテーブルエディタ, Up: テーブル

3.2 列幅と整列

テーブルの各列の幅はテーブルエディタによって自動的に決定されます.また,列の配置も自動的に決定されます.具体的には,列の中で数値でないフィールド数に対する,数値(と解釈できる)フィールド数の割合に応じて決まります.

ただ一つ,または,いくつかのフィールドでより多くのテキストを扱おうとすると,困ったことに列幅が広がってしまいます.もしくは,フィールドの内容にかかわらず,固定幅の列でテーブルを作成したいと思うかもしれません.列の幅を指定するためには,列のどこに記述してもよいですが,一つのフィールドが文字列‘<N>’だけを含む必要があります.ここで‘N’は,列の幅を指定する整数値の文字列です23.次に行なわれるテーブルの整列では,この数値を用いて列の幅を設定します.

     |---+------------------------------|               |---+--------|
     |   |                              |               |   | <6>    |
     | 1 | one                          |               | 1 | one    |
     | 2 | two                          |     ----\     | 2 | two    |
     | 3 | This is a long chunk of text |     ----/     | 3 | This=> |
     | 4 | four                         |               | 4 | four   |
     |---+------------------------------|               |---+--------|

指定された幅よりも広いフィールドは一部が切り取られ,文字列‘=>’で終わります.フィールド内に表示されていたテキストは,バッファ内部にそのまま存在し,表示が隠されていることに注意してください.隠されたテキストも含めてすべてを表示するためには,対象とするフィールドにマウスカーソルを置いてください.ツールチップが現われて,フィールドに含まれるすべての内容が表示されます.このようなフィールドを編集するには,C-c `を使います(C-cに続いてバッククォートを入力します).フィールドの全ての内容を表示した新しいウィンドウが開かれます.フィールドの内容を編集し,C-c C-cで完了します.

幅が狭められた列を持つテーブルが記述されているファイルを訪問する段階では,まだ文字列の隠蔽は実行されていません.見た目を良くするにはテーブルを整列する必要があります.オプションのorg-startup-align-all-tables を設定すると,ファイルを訪問するときにファイルに記述された全てのテーブルが自動的に整列されます.ただしスタートアップが少し遅くなります.以下の設定を利用すれば,ファイルごとにこのオプションを設定することもできます.

     #+STARTUP: align
     #+STARTUP: noalign

数値の多い列を右揃えにして,文字列の多い列を左揃えにする自動的な整列を無効にしたいならば,‘<r>’,‘c24,もしくは‘<l>’を同じような形式で利用できます.‘<|10>’のようにすれば,列を揃える方法とフィールドの幅を同時に指定できます.

書式の設定情報のみを含む行は,ドキュメントをエクスポートするときに自動的に削除されます.


Next: , Previous: 列幅と整列, Up: テーブル

3.3 行のグループ

org-modeのテーブルをエクスポートすると,垂直ラインを標準で表示しません.これは,一般に視覚的な満足度がより高いためです.しかし場合によっては,列のグループでテーブルを構造化する目的で,垂直ラインが役に立つます.これは水平ラインがいくつかの行をグループ化するために役立つことと同じです.列のグループを指定するために,最初のフィールドが‘/’だけを含む特別な行を使います.それ以降のフィールドについては,‘<’を含むとき,その列がグルーピングされる列の始めであることを意味します.‘>’を含む場合は,グループの終了を表します.‘<>’を含む列はこれ自体を一つのグループにします.列のグループを表す境界線が,エクスポート時に垂直ラインで表示されます.以下に例を示します.

     | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
     |---+-----+-----+-----+---------+------------|
     | / |   < |     |   > |       < |          > |
     | 1 |   1 |   1 |   1 |       1 |          1 |
     | 2 |   4 |   8 |  16 |  1.4142 |     1.1892 |
     | 3 |   9 |  27 |  81 |  1.7321 |     1.3161 |
     |---+-----+-----+-----+---------+------------|
     #+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))

表示させたいすべての垂直ラインの後ろに,列のグループ開始を指定するだけでも十分です.

     |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
     |----+-----+-----+-----+---------+------------|
     | /  | <   |     |     | <       |            |


Next: , Previous: 行のグループ, Up: テーブル

3.4 Orgtblマイナーモード

org-modeのテーブルエディタが提供する直感的な編集が好みなら,テキストモードやメールモードのような別のモードで利用したくなるかもしれません.これはマイナーモードのOrgtblモードが実現してくれます.M-x orgtbl-modeでトグルできます.標準でOrgtblモードを有効にするには,たとえばメッセージモードのときに,次の設定を使います.

     (add-hook 'message-mode-hook 'turn-on-orgtbl)

さらに,いくつかの特別な手順を追加することで,orgtblモードの任意のシンタックスを使ってテーブルをメンテナンスできます.たとえば,orgtblモードの簡単さと機能を用いてLaTeXのテーブルを構築できます.これは表計算機能も含んでいます.さらなる詳細は,任意の構文によるテーブル.を参照してください.


Next: , Previous: Orgtblモード, Up: テーブル

3.5 スプレッドシート

org-modeのテーブルエディタは,表計算機能を実装するためにEmacsのcalcを利用します.異なるフィールドの値を使って様々なフィールドの値を算出するために,Emacs Lispの書式も評価できます.十分な表計算機能が備わっていますが,org-modeの実装が他の表計算ソフトと全く同等というわけではありません.たとえば,org-modeは列の数式の概念を理解しています.これは,関連する各フィールドに数式をコピーすることなく,ヘッダーを除いた列にある全てのフィールドに適用されます.数式のデバッガもあります.また,数式に含まれる参照に対応するフィールドを,テーブル内でハイライトする機能と,それらの参照に矢印キーで移動する機能を持つ数式エディタがあります.


Next: , Previous: スプレッドシート, Up: スプレッドシート

3.5.1 参照

テーブル内部のフィールドを他のフィールドの値を使って計算するに,数式は,他のフィールドか範囲を必ず参照していなければなりません.org-modeでは,名前,絶対的または相対的な位置によってフィールドを参照することができます.フィールドの位置がどこかを特定するためには,そのフィールドでC-c ?を押してください.もしくは,グリッド表示をトグルするためにC-c }を使用してください.

フィールドの参照

数式は別フィールドの値を2つの方法で参照できます.他の表計算ソフトと同じように,B3のような文字と数値の組み合わせでフィールドを参照できます.三行目の第二フィールドを意味しています.

org-modeでは,もう一つの方法を好みます25.より一般的な次のような表記です.

     @row$column

また,相対的な参照も認めています.すなわち,値が計算されいるフィールドの行と列に相対的な参照です.このような相対的な参照は,数式を一度だけ記録すればよく,数式のコピーや変更せずにたくさんのフィールドで利用できます.

列の参照は,‘1’,‘2’,...‘N’のように絶対的に表されるか,もしくは,カーソル位置の列に対して相対的に‘+1’,‘-2’のように表されます.$>はテーブルの最終列を参照します.さらに,$>-2のようなオフセットを指定できます.この場合,一番右から三番目の列を表します.

行の指定ではデータを含む行のみをカウントして,水平ライン(hline)を無視します.列と同様に,‘1’...‘N’のように絶対的な行の番号を利用できます.また,‘+3’や‘-1’のようにカーソル位置の行に対する相対的な位置を表し,@>でテーブルの最終行を参照します26.ある水平ラインに対する相対的な行を指定することもできます.‘I’は最初のhlineへの参照27で,‘II’は二番目の水平ラインへの参照,といった具合に指定します.‘-I’は,カーソル位置の行の上方にある最初の水平ラインを参照し,‘+I’は下方にある最初の水平ラインを参照します.‘III+2’のように指定すると,テーブルの三番目の水平ラインから二番目の行を表します.

0’は,カーソル位置の行と列を参照します.また,もし参照について列と行のいずれかを記述しなければ,カーソル位置の行または列が暗黙に参照されます.

org-modeの符号無し数値を使った参照は,静的な参照です.つまり,二つの異なるフィールドにある数式の中で同じ参照を利用すれば,常に同じフィールドが参照されます.符号付き数値を使った参照は,動的な参照です.これは,見た目上は同じ参照であっても,数式で計算されるフィールドに依存して,異なるフィールドを参照できるためです.

いくつかの例を示します.

     @2$3      第二行,第三列
     C2        同上
     $5        現在行の第五列
     E&        同上
     @2        現在列,第二行
     @-1$-3    カーソル位置から一つ上,左に三つ目
     @-I$2     カーソル位置の上方の水平ライン直下の第二列
範囲参照

複数のフィールドを集めた矩形の範囲を参照できます.この範囲は,二つの参照を二つのドット‘..’で接続して指定します.二つの参照が共にカーソル位置の行にあるとき,単純に‘$2..$7’と指定できます.しかし,一方のフィールドが異なる列にあるときは,少なくとも最初に指定するフィールドについて@row$columnのような省略しない形式を使う必要があります(つまり,正しく解釈させるために参照を‘@’で始めなければなりません).具体例は次のようになります.

     $1..$3        カーソル位置の行の始めの3フィールド
     $P..$Q        列の名前を使った範囲(後述する詳細を見てください)
     @2$1..@4$3    二つのフィールド間にある6フィールド
     A2..C4        同上
     @-1$-2..@-1   カーソル位置の左の列の2つ上方の行の3フィールド
     @I..II        第一と第二の水平ラインに挟まれた領域(@I..@IIの短縮表記)

範囲参照はCalcのベクトル関数に代入可能な値のベクトルを返します.範囲に含まれる空のフィールドは,普通は除去されます.これはベクトルが空ではないフィールドのみを含むようにするためです(ただし下記の‘E’モードスイッチも参照してください).もし,すべてのフィールドが空ならば,数式のシンタックスエラーを避けるために‘[0]’が返されます.

数式中のフィールドの座標

Calc形式とLisp形式の数式では,数式の演算結果が指すフィールドの行と列の番号を取得するために,@#$#を利用できます(訳注:前者が行を表し,後者が列を表す).伝統的なLispの数式に相当するのはorg-table-current-dlineorg-table-current-columnです.たとえば,

     if(@# % 2, $#, string(""))   奇数行に限定して列の番号を抽出する
     $3 = remote(FOO, @@#$2)      テーブルFOOの二列目をコピーし,
                                  現在のテーブルの三列目に上書きする

二つ目の例では,テーブルFOOは少なくとも,カーソル位置のテーブルが持つ行数と同じ数の行がなければなりません.たくさんの行があると処理が重くなる28ことに気を付けてください.

名前付き参照

$name’は,列の名前として解釈されます.パラメーターや定数を扱います.定数は,変数org-table-formula-constantsを利用してグローバルに定義されます.また,次のような一文を追加して,ファイルのローカル変数として定義されます.

     #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6

プロパティ(see プロパティとカラム)もテーブルの数式では定数として扱われます.プロパティ‘:Xyz:’については‘$PROP_Xyz’という名前を使います.そして,このプロパティは現在のアウトラインエントリーとその上位が階層的に検索されます.もしconstants.elパッケージを読み込んでいるならば,これも定数を決めるために使われます.このパッケージには,プランク定数‘$h’のような物理定数,そしてキロメーター‘$km’のような単位が含まれています29.列の名前とパラメーターは,テーブルの特別なラインで設定できます.詳細は後述します(一歩進んだ機能.).すべての名前は文字から始まり,それ以降は文字と数値で構成します.

リモート参照

別テーブルの定数,フィールドそして範囲を参照できます.現在のファイルでも,別ファイルにある場合でも参照できます.シンタックスは,

     remote(NAME-OR-ID,REF)

NAMEは別ファイルにあるテーブルの名前で,テーブルの前の行に#+TBLNAME: NAMEと設定しておきます.エントリーのIDも利用でき,別ファイルにあるものも指定できます.この場合はエントリーに含まれる最初のテーブルを参照します.REFは前述したような絶対的なフィールドか範囲参照で,@3$3$somenameと表され,参照されたテーブルにおいて有効です.


Next: , Previous: 参照, Up: スプレッドシート

3.5.2 Calc用の数式構文

数式は,EmacsのCalcパッケージが理解できる任意の代数表現です.通常の計算とは異なるCalcの慣例に気を付けてください.‘/’は‘*’よりも低く優先されます.つまり,‘a/b*c’は,‘a/(b*c)’として解釈されます.calc-eval(see calc-eval)で評価される以前に,先ほどのルールに従って変数が代入されます. 範囲指定するベクトルは‘vmean’や‘vsum’のようなCalcのベクトル関数に直接渡されます.

数式は,セミコロンの後に続くオプションモードの文字列を含むことができます.この文字列は実行時にCalcや他のモードに作用するフラグで構成されます.デフォルトでは,org-modeは標準のCalcモード(精度=12桁,角度単位=度,分数/シンボリックモード=OFF)を使います.ただし,表示フォーマットは,テーブルをコンパクトに保つために,(float 8)に変更されています.

     p20           Calcの内部計算精度を20桁に設定
     n3 s3 e2 f4   通常表記,科学指数,工学指数,固定小数点
                   でCalcの出力結果がorg-modeに戻る.
                   Calcの計算精度が表示上の精度よりも高い限り,
                   Calc表記は精度上の制限を受けない.
     D R           角度モード(度/ラジアン)
     F S           分数/シンボリックモード
     N             全フィールドを数値として解釈.非数値は0を使用
     T             強制的に文字列として解釈
     E             領域中のフィールドを空に保つ
     L             リテラル

大きな整数値を使用しないか,浮動小数点での高精度な計算と表示を行なわないならば,Calcがすでにフォーマットした結果ではなく,org-modeに戻された後のCalcの出力結果を再フォーマットする目的で,printfによるフォーマット指定を代わりとして与えることが可能です30.いくつかの例を示します.

     $1+$2                第一と第二フィールドの和
     $1+$2;%.2f           同上.ただし,小数点以下2桁表示
     exp($2)+exp($1)      関数も利用可能
     $0;%.1f              小数点以下1桁に再フォーマット
     ($3-32)*5/9          華氏から摂氏への変換
     $c/$1/$cm            周波数[Hz]から波長[cm]への変換(constants.elを使用)
     tan($1);Dp3s1        角度計算(3桁精度,科学指数1桁)
     sin($1);Dp3%.1e      同上.ただし,printfでの表示指定
     vmean($2..$7)        列の平均値,ベクトルを利用
     vmean($2..$7);EN     同上.ただし,空フィールドを0とする
     taylor($3,x=7,2)     $3の2次のテーラー級数でx=7の値

Calcは論理演算の完全な集合も含んでいます.例として次があります.

     if($1<20,teen,string(""))  もし年齢$1が20未満なら十代,そうでなければ空


Next: , Previous: Calc用の数式構文, Up: スプレッドシート

3.5.3 数式としてのEmacs Lisp形式

Emacs Lispで数式を記述することもできます.Calcの機能では不十分なら,文字列操作と構造の制御に役立ちます.開き括弧が後ろに続くシングルクォートで数式が始まるとき,Lisp形式として解釈されます.評価値は,文字列か数値で返ります.Calcの数式と同じように,セミコロンの後にモードとprintfフォーマットを指定できます.Emacs Lisp形式では,フィールドの参照がLisp形式で挿入されることを意識する必要があります.デフォルトで,参照はフィールドを含む(ダブルクォートで括られた)Lispの文字列として挿入されます.もし‘N’モードスイッチを指定すると,全ての参照された要素は数値になり(非数値のフィールドは0になる),クォートなしでLisp形式の数値として挿入されます.‘L’フラッグを指定すると,全てのフィールドは,クォートなしでそのままの内容が挿入されます.すなわち,もしLisp形式の文字列として参照が挿入されることを望むなら,"$3"のように,ダブルクォートで参照のオペレータ自体を包んでください.範囲はスペースで区切られたフィールドとして挿入されます.そのため,リストやベクトルシンタックスに埋め込んだりできます.いくつかの例を示します.Lispを用いて計算をするときに,‘N’モードの使われ方に注意してください.

     一列目の内容について,一文字目と二文字目を入れ替える
       '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
     一列目と二列目を加算する.Calcの$1+$2と同じ
       '(+ $1 $2);N
     列1から列4の合計を計算.Calcのvsum($1..$4)と同じ
       '(apply '+ '($1..$4));N


Next: , Previous: Lisp用の数式構文, Up: スプレッドシート

3.5.4 フィールドと範囲の数式

特定のフィールドに数式を割り当てるためには,‘:=’に続けて,直接フィールドに書き込みます.たとえば,‘:=vsum(@II..III)’のようにします.カーソルがフィールドにある状態で,<TAB>や<RET>,もしくはC-c C-cを押すと,入力した数式はそのフィールド専用の数式として保存され,評価された後,フィールドの表示が演算結果で置き換わります.

数式はテーブルの下にある‘#+TBLFM:’で始まる特別な行に保存されます.テーブルの中で第三行の四番目のフィールドに数式を入力すると,この数式は‘@3$4=$1+$2’のように記述されます.適当なコマンドで列と行の挿入/消去/入れ替えを行なうとき,保存された数式の中の絶対参照(相対参照では関係ありません)は,同一のフィールドを参照するために変更されます.もちろん通常の編集コマンドを用いてテーブルの構造を編集するときには実行されません.したがって,マニュアルで数式を補正しなければなりません.フィールドに数式を記入する代わりに,次のコマンドも使用できます.

C-u C-c =     (org-table-eval-formula)
現在のフィールドに新しい数式をインストールします.このコマンドは,‘#+TBLFM:’行から選ばれたデフォルトの数式を表示し,現在のフィールドに適用してから保存します.

多数の別フィールドに数式を割り当てるために,等式の左側は特別な表現を指定できます.範囲数式を入力するショートカットはありません.これを入力するには,数式エディタ(see 数式の編集とデバッグ)を用いるか,#+TBLFM:行に直接記述します.

$2=
列の数式.列の全体に対して有効.よく利用されるため,org-modeはこれらの数式を特別な方法で扱います.列の数式.を参照してください.
@3=
行の数式.特定の行が含む全てのフィールドに適用する.@L=は最終行を意味する.
@1$2..@4$3=
範囲数式,与えられた矩形領域の全てのフィールドに適用する.これはある行の全てのフィールドではなく一部に対して数式を割り当てることにも利用できます.
$name=
名前付きフィールド(一歩進んだ機能を参照)


Next: , Previous: フィールドと範囲の数式, Up: スプレッドシート

3.5.5 列の数式

$3=のような,シンプルな列の参照を数式に指定すると,同じ数式がその列の全てのフィールドで使用されます.次の項目を利便性の高めるための例外としています.(1)テーブルが水平ラインを含む場合は,最初の水平ラインよりも上に存在する全ての行がテーブルのヘッダーの一部であると考えられ,列の数式によって変更されません.(2)フィールドや範囲の数式からすでに値を取得しているフィールドは,列の数式は関与しません.これらの条件によって列の数式はとても使いやすくなっています.

列に数式を割り当てるためには,列のフィールドに直接記述します.イコールの後に続くように,‘=$1+$2’としましょう.同じフィールド内で<TAB>や<RET>もしくはC-c C-cを押すと,入力した数式はそのフィールドのための数式として保存され,評価されたのち,フィールドの表示が演算結果で置き換わります.フィールドが‘=’だけの場合,以前に列で保存した数式が利用されます.各列について,org-modeは直前に利用した数式だけを記憶します.‘#+TBLFM:’行で,列の数式は‘$4=$1+$2’のように保存されます.列数式のイコールの左側には,列の名前を置くことができず,数値の列の参照か$>を置かなければなりません.

フィールドに数式を書き入れる代わりに,次のコマンドも利用できます.

C-c =     (org-table-eval-formula)
現在の列に新しい数式を書き込み,数式の演算結果で置き換える.このコマンドは‘#+TBLFM:’の列から取得したデフォルトの数式を表示し,カーソル位置のフィールドに適用してから保存します.数値のプレフィックス(たとえば C-5 C-c =)を用いると,現在の列で連続したフィールドに同じ効果を与えます.


Next: , Previous: 列の数式, Up: スプレッドシート

3.5.6 数式の編集とデバッグ

ミニバッファ,もしくは,直接フィールド内で,個々の数式を編集できます.org-modeは,テーブルに含まれるすべてのアクティブな数式が表示される特別なバッファも用意しています.数式を編集しようとすると,もし可能ならば,org-modeは参照を標準のフォーマット(B3D&のような記法)に変換します.内部フォーマット(@3$2$4のような記法)を用いて編集したい場合は,変数org-table-use-standard-referencesを設定してください.

C-c = or C-u C-c =     (org-table-eval-formula)
カーソル位置の列やフィールドに結びついている数式をミニバッファで編集する.列の数式フィールドと範囲の数式を参照してください.
C-u C-u C-c =     (org-table-eval-formula)
カーソル位置のフィールドにアクティブな数式(フィールドの数式,もしくは列の数式)を再挿入します.これはフィールドの中でそのまま編集できるようにするためです.ミニバッファでの編集よりも有利なのは,C-c ?を使えることです.?
C-c
?     (org-table-field-info) テーブルのフィールド内で数式を編集するときに,数式内のカーソルが置かれている参照によって指し示されたフィールドをハイライトする.
C-c }
オーバーレイ(org-table-toggle-coordinate-overlays)を使用して,テーブルの行と列の番号を表示するようにトグルする.テーブルが整列される度に表示が変わり,C-c C-cで強制的に表示を更新できます.
C-c {
数式のデバッガをON/OFFする(org-table-toggle-formula-debugger).'
C-c
'     (org-table-edit-formulas)

現在のテーブルにあるすべての数式を,特別なバッファで編集する.バッファでは数式はラインごとに一つずつ表示される.カーソル位置のフィールドにアクティブな数式があるとき,カーソルエディタのカーソルはその数式をマークします.この特別なバッファの中では,org-modeは,カーソルがあるどんなフィールドや範囲参照も自動的にハイライトします.数式の編集,削除,追加が可能で,さらに次のコマンドを利用できます.

C-c C-c or C-x C-s     (org-table-fedit-finish)
数式エディタを抜けて,修正された数式を保存します.プレフィックスC-uを使うと,新しい数式をテーブル全体に適用します.C-q
C-c
C-q     (org-table-fedit-abort) 変更を破棄して数式エディタを抜けます.C-r
C-c
C-r     (org-table-fedit-toggle-ref-type)

数式エディタの全ての参照について,(B3のような)標準の記法と(@3$2のような)内部の記法をトグルします.

<TAB>     (org-table-fedit-lisp-indent)
カーソル位置のLisp数式を見やすくするかインテンドします.ラインにLisp数式が含まれる場合は,Emacs Lispのルールに基づいて数式を整えます.さらに<TAB>を押すと,整えられた数式を崩して元の状態に戻します.開いた数式では,Emacs Lispモードのように<TAB>でさらにインテンドします.
M-<TAB>     (lisp-complete-symbol)
Emacs LispモードのようにLispの記号を補完します.
S-<up>/<down>/<left>/<right>
カーソル位置の参照を移動します.たとえば,参照がB3S-<right>を押すと,C3に変化します.これは相対参照や水平ラインの参照についても同じように動作します.
M-S-<up>     (org-table-fedit-line-up)
M-S-<down>     (org-table-fedit-line-down)
列の数式のためのテストライン(訳注:現在ハイライトされている行)をorg-modeのバッファで上下に移動します.
M-<up>     (org-table-fedit-scroll-down)
M-<down>     (org-table-fedit-scroll-up)
テーブルを表示するウィンドウをスクロールします.
C-c }
テーブルの座標グリッドをON/OFFする

テーブルのフィールドを空欄にしても,そのフィールドに結びつけられた数式は削除されません.これは数式が別な行(‘#+TBLFM:’行)に保存されているためです.次に再計算が行なわれる際に,再びフィールドに数式の結果が戻ります.フィールドから数式を削除するためには,数式を表示させて空にするか,‘#+TBLFM:’行を編集する必要があります.

#+TBLFM:’行は直接編集でき,変更した数式が再適用できます.これは‘#+TBLFM:’行でC-c C-cを押すか,テーブルで通常の再計算コマンドを発行することで実行できます.

数式のデバッグ

数式を評価してエラーが生じた時は,フィールドの文字列が‘#ERROR’に変わります.バグを見つけるために,変数の代入と計算の過程で何が起こっているかを調べたいならば,Tblメニューにある数式のデバッグを有効にして,計算をやり直してください.たとえば,フィールド内でC-u C-u C-c = <RET>と押します.すると,詳細な情報が表示されます.


Next: , Previous: 数式の編集とデバッグ, Up: スプレッドシート

3.5.7 テーブルの更新

テーブルの再計算は,通常は自動的に行なわれず,コマンドにより実行する必要があります.一歩進んだ機能を参照してください.少なくとも半自動で計算されます.

テーブルのある行もしくはテーブル全体を再計算するために,次のコマンドを使います.

C-c *     (org-table-recalculate)
最初に保存されている列の数式を用いて,現在行を左から右に再計算します.現在行の全てのフィールドと範囲数式が対象です.
C-u C-c *
C-u C-c C-c
行ごとにテーブル全体を再計算します.最初の水平ラインの以前にあるどの行も再計算されません.これらは,テーブルのヘッダーであると想定します.C-u C-c *
C-u
C-u C-c * or C-u C-u C-c C-c     (org-table-iterate)

計算結果の変化が生じなくなるまでテーブルの再計算を繰り返します.これは,計算の流れにおいて後段で計算される別フィールドの値を,すでに計算の対象となっているフィールドで利用する場合に必要になるでしょう.

M-x org-table-recalculate-buffer-tables
現在のバッファに含まれる全てのフィールドを再計算します
M-x org-table-iterate-buffer-tables
テーブル間の依存関係を収束させるために,カレントバッファの全てのテーブルを反復計算する.


Previous: テーブルの更新, Up: スプレッドシート

3.5.8 一歩進んだ機能

もしも自動的にフィールドを再計算したい,もしくは,フィールドと列に名前を割り当てたいならば,テーブルの第一列を特別なマーキング文字を格納するために予約しておく必要があります.

C-#     (org-table-rotate-recalc-marks)
第一行の計算用マーカを‘ ’,‘#’,‘*’,‘!’,‘$’の順番に循環します.アクティブリージョンがあれば,その領域のすべてのマーカを変更します.

例として,学生の試験結果を集めて自動再計算の機能を使うテーブルを示します.

     |---+---------+--------+--------+--------+-------+------|
     |   | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
     |---+---------+--------+--------+--------+-------+------|
     | ! |         |     P1 |     P2 |     P3 |   Tot |      |
     | # | Maximum |     10 |     15 |     25 |    50 | 10.0 |
     | ^ |         |     m1 |     m2 |     m3 |    mt |      |
     |---+---------+--------+--------+--------+-------+------|
     | # | Peter   |     10 |      8 |     23 |    41 |  8.2 |
     | # | Sam     |      2 |      4 |      3 |     9 |  1.8 |
     |---+---------+--------+--------+--------+-------+------|
     |   | Average |        |        |        |  29.7 |      |
     | ^ |         |        |        |        |    at |      |
     | $ | max=50  |        |        |        |       |      |
     |---+---------+--------+--------+--------+-------+------|
     #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@-II..@-I);%.1f

重要: このような特別なテーブルについて,C-u C-c *を使った再計算は,‘#’もしくは‘*’でマークされた行,そして,自身に対して数式が適用されているフィールドだけに影響することに気をつけてください.最初のフィールドが空になっている行には,列の数式が適用されません.

マーキング文字には,次のような意味があります.

!
行に含まれるフィールドが,対応する列の名前を表します.これは‘$6’ではなく‘$Tot’として列を参照可能にするためです.
^
上側の列のフィールドについて名前を定義します.この定義を用いることで,テーブルのどのような数式でも,値‘10’を参照するために‘$m1’を利用できます.また,名前を定義するフィールドに数式を割り当てると,‘$name=...’として保存されます.
_
^’とほぼ同じだが,下側にある列のフィールドに対する名前を定義します.
$
この行のフィールドは,数式のパラメータを定義します.たとえば,‘$’が指定された行で,フィールドが‘max=50’を含むならば,テーブルの数式は‘$max’を用いて値‘50’を参照できます.パラメーターは,正に定数として動作し,テーブルごとに定義されます.
#
行の中で<TAB>,RET,またはS-<TAB>を押すと,この行のフィールドは自動的に再計算されます.また,この行はC-u C-c *によるグローバルな再計算に利用されます.このコマンドでは,マークされていない行はそのままに維持されます.
*
C-u C-c *によるグローバルな再計算にこの行を利用します.ただし,自動的な再計算には利用されません.自動再計算が編集速度を著しく低下させる場合に利用します.
マークされていない行は,C-u C-c *による再計算から除外されます.再計算の対象とするすべきすべての行は,‘#’や‘*’でマークされなければなりません.
/
この行はエクスポートしない.表示幅を狭くする‘<N>’マーカ,もしくは列のグループマーカを含む列で使うと便利です.

最後に,素晴らしいcalc.elパッケージで何ができるのかを知るという学習欲を刺激するために,一つのテーブルを示します.このテーブルは,いくつかの関数に対して,xにおけるn次のテーラー級数を計算します.

     |---+-------------+---+-----+--------------------------------------|
     |   | Func        | n | x   | Result                               |
     |---+-------------+---+-----+--------------------------------------|
     | # | exp(x)      | 1 | x   | 1 + x                                |
     | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |
     | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |
     | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
     | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |
     | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |
     |---+-------------+---+-----+--------------------------------------|
     #+TBLFM: $5=taylor($2,$4,$3);n3


Previous: スプレッドシート, Up: テーブル

3.6 Org-Plot

Org-Plotは,org-modeのテーブルに保存された情報を用いた2次元と3次元のグラフを生成できます.Gnuplot http://www.gnuplot.info/gnuplot-mode http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.htmlを利用しています.動作を確認するためには,GnuplotとGnuplotモードの両方がシステムにインストールされていることを確かめてください.その上で,次に示すテーブルでorg-plot/gnuplotを呼び出してください.

     #+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
     | Sede      | Max cites | H-index |
     |-----------+-----------+---------|
     | Chile     |    257.72 |   21.39 |
     | Leeds     |    165.77 |   19.68 |
     | Sao Paolo |     71.00 |   11.50 |
     | Stockholm |    134.19 |   14.33 |
     | Morelia   |    257.56 |   17.67 |

Org-Plotは,テーブルのヘッダをラベルとして適用できます.ラベル,タイプ,コンテンツ,プロットの外観は,テーブルの上の#+PLOT:で始まる行によって制御可能です.以下のOrg-Plotオプションの完全なリストを見てください.さらなる情報と例は,http://orgmode.org/worg/org-tutorials/org-plot.htmlにあるOrg-Plotのチュートリアルを参照してください.

プロットオプション
set
グラフの描画時に設定されるgnuplotのオプションを指定します.
title
プロットのタイトルを設定します.
ind
x軸として利用するテーブルの列を指定します.
deps
Lispスタイルのリストで描画するように列を指定します.括弧で括られ,スペースで分離されます.たとえば,dep:(3 4)とすると,第三と第四列を描画します(デフォルトでは,indの列を除いて他の全ての列が描画されます).
type
プロットの種別(2d3dもしくはgrid)を指定します.
with
withオプションで挿入される,各プロット点の表示種別を指定します.たとえば, linespointsboxesimplusesなどで,デフォルトはlines
file
プロット結果を外部ファイルに出力したいときに,"path/to/desired/output-file"のように指定します.
labels
depsで利用されるラベルのリストを指定します.標準では列のヘッダーが使われます(存在する場合).
line
Gnuplotのスクリプトに,記述内容がそのまま挿入される行を設定します.
map
プロットの種別で3dもしくはgridを指定する場合に,このオプションをtにすると,3dの立体的な傾斜がわかる表示ではなく,平らな表示(訳注:平面に射影した状態)でプロットします.
timefmt
Gnuplotが解釈するような形式にorg-modeのタイムスタンプを整えます.デフォルトでは, ‘%Y-%m-%d-%H:%M:%S’が使われます.
script
Gnuplotをさらに制御するために,プロットに利用されるスクリプトファイル(ファイル名をダブルクォーテーションで囲んでください)を指定できます.プロットを始める前に,指定されたスクリプトファイルに含まれるすべての$datafileの記述は,プロット点を格納するファイル(訳注:org-plotが作る一時的なプロット点データ)へのファイルパスで置き換えられます.仮にこのオプションを指定しても,データファイルの内容に影響を与えることができるように,プロットの種別を制御したくなるかもしれません.


Next: , Previous: テーブル, Up: Top

4 ハイパーリンク

HTMLのように、Org-modeはファイル内でリンクしたり、他のファイルやUsenetの記事やメールなど、外部へリンクしたりすることができます。


Next: , Previous: ハイパーリンク, Up: ハイパーリンク

4.1 リンクのフォーマット

Org-modeはURLのようなリンクを認識して、クリック可能なリンクにしてくれます。Org-mode上での一般的なリンクのフォーマットは以下のようなものです:

     [[リンク][項目名]]       または           [[リンク]]

すべての括弧を入力し終えてリンクが完成すると、Org-modeは、[[リンク][項目名]]のかわりに「項目名」を、[[リンク]]のかわりに「リンク」を表示します。リンクは「org-link」で設定されたフェイスでハイライトされます。なおデフォルトのフェイスはアンダーラインになっています。表示されている部分については、直接編集することができます。項目名がない場合はリンクの編集になり、項目名がある場合は項目名の編集になることに注意してください。表示されていないリンクを編集するには、該当するリンクの上で「C-c C-l」を実行します。

表示されたテキストの始端もしくは終端にカーソルを置いて<BACKSPACE>を押すと、その場所にある(表示されていない)括弧を取り除くことができます。これによってリンクは不完全なものになり、リンクの内部は再びプレーンなテキストとして表示されます。取り除かれた括弧を再度挿入することでリンクは再び内部化され隠されます。すべてのリンクの内部的な構造を表示するには、Org->Hyperlinks->Literal linksというメニューを使用します。


Next: , Previous: リンクのフォーマット, Up: ハイパーリンク

4.2 内部リンク

もしもリンクがURLのようなものではない場合、現在使用しているファイル内へのリンクだとみなされます。最も重要なケースは、‘[[#my-custom-id]]’のようなリンクで、‘my-custom-id’というCUSTOM_IDプロパティのついた見出しへリンクします。このようなカスタムIDは、HTMLでのエクスポート(see HTMLのエクスポート)時にセクション毎のリンクを書き出してくれるので、大変便利です。ただし、各カスタムID名がファイル内で重複しないようにする必要があります。

[[My Target]]’や‘[[My Target][Find my target]]’のようなリンクは、現在使用しているファイル内でのテキスト検索になります。

マウスのクリック、またはリンク上にカーソルがあるときはC-c C-oで、リンクを開くことができます(see リンクの扱い)。カスタムIDへのリンクは、対応する見出しを指し示します。テキストへのリンクには、専用のターゲットを用意する方が良いでしょう。同じ文字列を二重の角付きの括弧でくくるとか。ターゲットはどこに置かれていてもかまいません。しかし、コメント行のようなところに置いたほうが便利なことが多いでしょう。たとえば、以下のように。

     # <<My Target>>

HTMLでのエクスポート(see HTMLのエクスポート)では、このようなターゲットは、‘http’で直接アクセスできる名前つきのアンカーになります31

もしも専用のターゲットが存在しない場合には、Org-modeはそのリンクにある語句と同じ見出しを検索しますが、TODOキーワードやタグ32も検索されます。Org-mode以外のファイルでは、リンクのテキストにある語句を検索します。上記の例では、‘my target’が検索されます。

リンクをたどると、Org-mode自身のマークリングにマークが格納されます。C-c &で、ひとつ前のポジションに戻ります。このコマンドを連続して使うことにより、更に前のポジションへと戻ることができます。


Previous: 内部リンク, Up: 内部リンク

4.2.1 ラジオターゲット

Org-modeは、通常のテキスト部分に書かれたターゲット名を、自動でリンクにすることができます。ですから、わざわざ個別のリンクを作成することなく、それぞれのテキストがターゲットにリンクされます。ラジオターゲットは、3つの角括弧で囲まれたものです。例えば、‘<<<My Target>>>’というターゲットは、通常のテキスト部分に‘my target’が登場する度にアクティブなリンクにしてくれます。Org-modeファイル内のラジオターゲットは、最初の読み込み時のみ自動的にスキャンされます。編集中にターゲットをアップデートしてリンクするには、ターゲットのところでC-c C-cを実行します。


Next: , Previous: 内部リンク, Up: ハイパーリンク

4.3 外部リンク

Org-modeは次のようなリンクをサポートしています。ファイル、webサイト、ネットニュース、emailのメッセージ、BBDBデータベースの項目、IRCの会話とログなど。外部リンクはURLを記載するような方法でリンクします。それらはコロンの前に短い定義用の文字列をつけて表記します。コロンのあとに空白をとってはいけません。以下に例とそれぞれのリンクのタイプの一覧を示します。

     http://www.astro.uva.nl/~dominik          ウェブへのリンク
     doi:10.1000/182                           電子文献のためのDOI
     file:/home/dominik/images/jupiter.jpg     ファイルへの絶対パス
     /home/dominik/images/jupiter.jpg          上に同じ
     file:papers/last.pdf                      ファイルへの相対パス
     ./papers/last.pdf                         same as above
     file:/myself@some.where:papers/last.pdf   リモートマシン上のファイルへのパス
     /myself@some.where:papers/last.pdf        same as above
     file:sometextfile::NNN                    ジャンプ先の行番号付きファイル
     file:projects.org                         他のOrg-modeファイルへのリンク
     file:projects.org::some words             Org-modeファイル内でのテキスト検索
     file:projects.org::*task title            Org-modeファイル内での見出し検索
     docview:papers/last.pdf::NNN              ファイルをページ指定して開く
     id:B7423F4D-2E8A-471B-8810-C40F074717E9   IDのついた見出しへのリンク
     news:comp.emacs                           Usenetへのリンク
     mailto:adent@galaxy.net                   メールリンク
     vm:folder                                 VMのフォルダへのリンク
     vm:folder#id                              VMのメールメッセージへのリンク
     vm://myself@some.where.org/folder#id      リモートマシン上のVMのメールメッセージへのリンク
     wl:folder                                 WANDERLUSTのフォルダーへのリンク
     wl:folder#id                              WANDERLUSTのメールメッセージへのリンク
     mhe:folder                                MH-Eのフォルダーへのリンク
     mhe:folder#id                             MH-Eのメールメッセージへのリンク
     rmail:folder                              RMAILのフォルダへのリンク
     rmail:folder#id                           RMAILのメールメッセージへのリンク
     gnus:group                                Gnusグループへのリンク
     gnus:group#id                             Gnusの記事へのリンク
     bbdb:R.*Stallman                          BBDBへのリンク(正規表現)
     irc:/irc.com/#emacs/bob                   IRCへのリンク
     info:org#External%20links                 Infoノードへのリンク(空白をエンコード)
     shell:ls *.org                            シェルコマンドへのリンク
     elisp:org-agenda                          Elispコマンドへのリンク
     elisp:(find-file-other-frame "Elisp.org") Elispフォームを評価

Org-modeをカスタマイズして、新しいリンクのタイプを付け加えるには、ハイパーリンクのタイプの追加を参照してください。

リンクは二重括弧で囲んだ方が良いでしょう。URLの代わりにテキストを表示することもできます(see リンクのフォーマット)。たとえば、以下のように。

     [[http://www.gnu.org/software/emacs/][GNU Emacs]]

項目名が画像を指し示すファイル名やURLの場合、HTMLエクスポート(see HTMLのエクスポート)によって、画像はクリック可能なボタンとして書き出されます。項目名がない画像の場合には、インライン画像として書き出されます。

Org-modeは、通常のテキスト内のリンクを見つけ出し、外部リンクとします。もしスペースがリンクの一部として必要な場合(たとえば、‘bbdb:Richard Stallman’)や、リンクの末端であいまいさをなくしたい場合、角括弧で囲みます。


Next: , Previous: 外部リンク, Up: ハイパーリンク

4.4 リンクの扱い

Org-modeは正しい構文でリンクを作成したり、Org-modeのファイルにリンクを挿入したり、そのリンクをたどったりする方法を提供しています。

C-c l     (org-store-link)
現在の位置へのリンクを一時保管します。これはリンクを作成するときに、どのバッファでも使用できるグローバルなコマンド(あなた自身でキーバインドを作成しなければなりません。)です。リンクは一時保管され、後からOrg-modeのバッファへ挿入することができます(下記参照)。どの種類のリンクが作成されるかは、現在のバッファが何であるかによります。

Org-modeバッファ
もしカーソル位置に‘<<target>>’がある場合、リンクはそのターゲットを指します。それ以外の場合は、見出しを指し、見出しは項目名にもなります。

もし見出しにCUSTOM_IDプロパティがある場合、このカスタムIDプロパティへのリンクが一時保管されます。また、(org-link-to-org-use-idの値によりますが)グローバルに固有のIDプロパティが、リンクを作成するために作られます。ですから、このコマンドをOrg-modeバッファ内で使うと、潜在的にふたつのリンクを作成することになります。つまり、Org-modeバッファ内でこのコマンドを使用することにより、人間が読むことのできるカスタムIDと、グローバルに固有で、エントリーがファイル間を移動しても動作するリンクが作成されます。後にリンクを挿入するときには、どのリンクを挿入するかを決めなければなりません。

メール/ニュースクライアント:VM, Rmail, Wanderlust, MH-E, Gnus
ほとんどすべてのEmacsのメールクライアントがサポートされています。リンクは現在の記事を指し示します。Gnusバッファでは、グループを指し示すこともあるでしょう。項目名は筆者名と題名から作成されます。

ウェブブラウザー:W3 and W3M
現在のURLがリンクになり、ページのタイトルが項目名になります。

連絡先:BBDB
BBDBバッファ内で作成されたリンクは、現在のエントリーへのリンクになります。

Chat: IRC
IRCリンクの場合、org-irc-link-to-logs変数をtにした場合は、ログファイル内に、現在の会話に相当する部分への‘file:/’形式のリンクが作成されます。それ以外の場合は、user/channel/serverへの‘irc:/’スタイルのリンクが一時保管されます。

その他のファイル
その他のファイルの場合、リンクは、現在の行を指ししめす検索語句(see 検索オプション)を伴って作成されます。もし、アクティブなリージョンがある場合は、選択された言葉が検索語句の基本となります。自動的に作成されたリンクがうまく働かなかったり、不正確であったりする場合は、カスタム関数を書いて、検索語句を選択したり、特定のファイル形式を検索したりすることがきます。カスタム検索を参照してください。C-c lというキーバインディングはひとつの提案に過ぎませんインストール)。

アジェンダビュー
カーソルがアジェンダビューにあるときは、作成されたリンクは現在の行が参照するエントリーを指し示します。


C-c C-l     (org-insert-link)
リンク33を挿入します。そうすると、プロンプトによって、バッファに挿入するリンクをたずねられます。テキストを使った内部リンクや、既に述べましたリンクタイプのいずれかへのリンクを入力するだけです。リンクは項目名とともに、バッファ34に挿入されます。もし、このコマンドの呼び出し時にテキストが選択されていた場合には、選択されたテキストがデフォルトの項目名になります。

一時保管されたリンクを挿入
<現在のセッションで一時保管されたすべてのリンクは、このプロンプトの履歴となっていますので、<up>や<down>(あるいは、M-p/n)を使ってこれらにアクセスすることができます。

補完の支援
<TAB>を使用した補完機能によって、リンクの省略記法で定義された接頭辞(see リンクの省略記法)を含む、‘http’や‘ftp’などのリンクを適切に挿入することができるでしょう。もし、prefixのみをタイプした後に<RET>を押すと、Org-modeは、いくつかのリンク形式35に対して詳細な補完の支援を行います。たとえば、file <RET>をタイプすると、ファイル名の補完((または、C-u C-c C-lをタイプします。以下を参照。)を行い、bbdb <RET>をタイプすると、連絡先の名前を補完することができます。

C-u C-c C-l
接頭辞C-uを付けてC-c C-lが呼び出されたときは、ファイルへのリンクが挿入され、ファイル名の補完を利用することができます。リンクされたファイルがカレントディレクトリにあるときや、カレントディレクトリのサブディレクトリにあるとき、あるいはパスが‘../’を使って相対パスで書かれているときは、ファイルへのパスは、現在のOrg-modeファイルからの相対パスとして挿入されます。それ以外の場合は絶対パスが使われ、可能であれば、ホームディレクトリには‘~/’が使われます。2つのC-uを付けることによって、絶対パス表記を明確に指定することができます。
C-c C-l (カーソルがリンク上にある場合)
リンク上にカーソルがある場合、C-c C-lを実行すると、リンクと項目名を編集することができます。
C-c C-o     (org-open-at-point)
その場所にあるリンクを開きます。リンクがURLならば、(browse-url-at-pointを使って)ウェブブラウザーを開きますし、それぞれ対応するリンクにより、VM/MH-E/Wanderlust/Rmail/Gnus/BBDBが起動し、シェルへのリンクの場合はコマンドを実行します。カーソルが内部リンク上にあるときは、対応する検索を行います。カーソルが見出しのタグ上にあるときは、対応するタグビューを作成します。カーソルがタイムスタンプ上にあるときは、その日のアジェンダを表示します。さらに、‘file:’リンクの場合、テキストファイルやリモートマシン上のファイルはEmacsで、非テキストファイルは適切なアプリケーションで、ファイルを開きます。ファイルの分類は、拡張子のみによって判断されます。org-file-appsを参照してください。もし、デフォルトのアプリケーションではなくEmacsでファイルを開きたい場合は、接頭辞C-uを付け、Emacsで開くことを避けたい場合は、接頭辞C-u C-uを付けてください。カーソルがリンクではない見出し上にあるときは、見出し上のすべてのリンクとエントリーテキストを表示します。
<RET> org-return-follows-linkが設定されているときは、<RET>もポイント上のリンクを開きます。
mouse-2
mouse-1
リンク上では、mouse-2C-c C-oと同様にリンクを開きます。Emacs 22以降では、mouse-1もリンクを開きます。
mouse-3
mouse-2と同様にリンクを開きますが、ファイルのリンクを強制的にEmacsで開き、内部リンクは別のウインドウ36で開きます。C-x C-v
C-c
C-x C-v     (org-toggle-inline-images)

リンクされた画像のインライン表示をトグルします。通常これはリンクに項目名がない画像のみをインライン表示するものです。すなわち、エクスポート時にインラインになる画像のことです。org-startup-with-inline-images変数37を設定することにより、インライン画像を起動時に表示されることができます。%

C-c
%     (org-mark-ring-push)

現在のポジションをマークリングに格納し、現在のポジションに簡単に戻ってこられるようにします。ファイル内部でのリンクをたどるときは、自動的にこれが行われます。&

C-c
&     (org-mark-ring-goto)

記録されたポジションへ戻ります。ポジションは、内部リンクをたどるコマンドとC-c %によって記録されます。このコマンドを連続して何回か使うと、記録されたポジション間を移動することができます。C-n

C-c C-x
C-n     (org-next-link)
C-c C-x C-p     (org-previous-link)
バッファ内の前後のリンクへ移動します。バッファの端では、移動は、いったんエラーになり、もう一度行うと回り込みます。このキーバインドはとても長いので、C-nC-pに設定したいと考えるかもしれません。
          (add-hook 'org-load-hook
            (lambda ()
              (define-key org-mode-map "\C-n" 'org-next-link)
              (define-key org-mode-map "\C-p" 'org-previous-link)))


Next: , Previous: リンクの扱い, Up: ハイパーリンク

4.5 Org外でのリンク利用

Org-modeだけでなく、どのEmacsのバッファでも、Org-mode構文を持つリンクを挿入し、たどることができます。このためには、次のような2つのグローバルコマンドを作成しなければなりません(自分に適したグローバルなキーを設定してください)。

     (global-set-key "\C-c L" 'org-insert-link-global)
     (global-set-key "\C-c o" 'org-open-at-point-global)


Next: , Previous: Org外でのリンク利用, Up: ハイパーリンク

4.6 リンクの省略記法

長いURLをタイプするのは面倒ですが、往々にしてひとつの文章には似たようなリンクが数多く登場するものです。このような場合には、リンクの省略記法を使うことができます。省略記法されたリンクは次のようなものです。

     [[リンク語句:タグ][項目名]]

タグはなくても構いません。リンク語句は文字で始まる語句、数字、‘-’、‘_’を使うことができます。省略記法は、リンク語句とリンクテキストを関連づけるorg-link-abbrev-alist変数の値にしたがって展開されます。以下に例を示します。

     (setq org-link-abbrev-alist
       '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
         ("google"   . "http://www.google.com/search?q=")
         ("gmap"     . "http://maps.google.com/maps?q=%s")
         ("omap"     . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
         ("ads"      . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))

置き換えるテキストに‘%s’が含まれている場合は、タグに置き換えられます。それ以外の場合は、タグはリンクを作成するために文字列に付け加えられます。リンクを作成する引数としてタグと一緒に呼び出される機能を指定したほうがよいかもしれません。

上記の設定だと、[[bugzilla:129]]で特定のバグへリンクすることができ、[[google:OrgMode]]で‘OrgMode’をウェブ検索することができ、[[gmap:51 Franklin Street, Boston]]でFree Software Foundationの、[[omap:Science Park 904, Amsterdam, The Netherlands]]でCarstenのオフィスの地図上の位置を表示することができ、[[ads:Dominik,C]]でOrg-modeの作者がEmacsのハッキングの他に何をしているかを見つけることができます。

ある特定のOrg-modeバッファだけでリンクの省略記法を使いたい場合は、次のようにすることで定義できます。

     #+LINK: bugzilla  http://10.1.2.9/bugzilla/show_bug.cgi?id=
     #+LINK: google    http://www.google.com/search?q=%s

バッファ内補完(see 補完)は、‘[’以降でリンクの省略記法を補完するために使用することができます。C-c C-lでリンクを挿入することへの特別な支援(たとえば、補完)を実行するorg-PREFIX-complete-link関数を定義することもできます。このような関数はいかなる引数も受け入れず、接頭辞付きのリンクを返します。


Next: , Previous: リンクの省略記法, Up: ハイパーリンク

4.7 ファイルリンクにおける検索オプション

ファイルへのリンクには、ファイル内の特定の場所へジャンプするリンクを含ませることができます。これは、ダブルコロン38の後に行番号や検索語句を置くことによって行います。たとえば、C-c lコマンドをタイプして、あるファイルへのリンクを作成する場合(see リンクの扱い)、現在の行の言葉を検索語句としてリンクに含めることができ、C-c C-oコマンドで開くことができます。

説明と共に、あるファイルリンクへの検索語句を付加する様々な構文の方法を示します。

     [[file:~/code/main.c::255]]
     [[file:~/xx.org::My Target]]
     [[file:~/xx.org::*My Target]]
     [[file:~/xx.org::#my-custom-id]]
     [[file:~/xx.org::/regexp/]]
255
255行目へジャンプします。
My Target
内部リンクの検索と同様に、‘<<My Target>>’という名前のリンクターゲット、あるいは‘my target’というテキストを検索します(内部リンクを参照してください。)。HTMLエクスポート(see HTMLのエクスポート)では、このようなファイルへのリンクは、リンク先のファイル内にある、一致する名前のアンカーへのHTMLリンクになります。
*My Target
Org-modeファイルの中で見出しの検索に限定されます。
#my-custom-id
CUSTOM_IDプロパティを持つ見出しへリンクします。
/regexp/
regexpを正規表現検索します。これは、Emacsのoccurコマンドを使って、一致するすべてを別ウインドウでリスト表示します。ターゲットがOrg-modeファイルならば、org-occurが使われ、一致した部分について、ツリーの抽出を行います。

特殊なケースとして、ファイル名が指定されていないファイルのリンクは、現在のファイルの検索となります。たとえば、[[file:::find me]]は、‘[[find me]]’と同様に、現在のファイルで‘find me’を検索します。


Previous: 検索オプション, Up: ハイパーリンク

4.8 カスタム検索

デフォルトの検索文字列作成のメカニズムと、実際のファイル検索のメカニズムは、すべての場合でうまく動作するとは限りません。たとえば、BibTeXデータベースのファイルは、‘year=\"1993\"’のようなエントリーをたくさん有していますが、これは良い検索文字列であるとは言えません。なぜならば、BibTeXのエントリーでは、唯一の識別情報は引用キーだからです。

このような問題に直面した場合は、特定のファイルタイプに適した検索文字列を設定し、そのファイルで検索を行うカスタム関数を書くことができます。add-hookを使用して、これらの関数は、org-create-file-search-functionsorg-execute-file-search-functionsというフック変数に付け加えられる必要があります。これらの変数についてのより詳しい情報は、ドキュメント文字列を参照してください。Org-modeは、実際にこのメカニズムをBibTeXデータベースファイルに使用しており、該当するコードを実装のサンプルとして使うことができます。org-bibtex.elというファイルを参照してください。


Next: , Previous: ハイパーリンク, Up: Top

5 TODOアイテム

Org-modeではTODOリストを個別の文書として管理するわけではありません。39その変りに、TODOアイテムはノートファイルの一部として存在します。なぜならTODOアイテムはメモを書いている最中に頭に浮かぶものだからです!Org-modeでは、ツリーの中のどの項目でも簡単にマークしてTODOアイテムとするだけです。この方法により特定の情報を複数個所にもつ必要は無くなり、TODOアイテムを作成するのに使用した全文書が常に最新であることになります。

もちろん、こうした手法をとることで、あなたのノートファイルの中のあちこちに、TODOアイテムが散らばることになります。それを補うためにOrg-modeでは、やらなければならない事柄の全体を見渡す方法が提供されています。


Next: , Previous: TODOアイテム, Up: TODOアイテム

5.1 基本的なTODOの機能

どの見出しでも‘TODO’という言葉を前につけることで、TODOアイテムとみなします。例えば:

     *** TODO サム フォーチュンに手紙を書く。

TODO項目を入力するときの最も重要なコマンドは以下のとおりです。

C-c C-t     (org-todo)
現在のTODOの状態を次のように切り替えます。
          ,-> (マーク無し) -> TODO -> DONE --.
          '----------------------------------'

同じような状態の切り替えは、タイムラインとアジェンダバッファでtコマンドキー(see アジェンダのコマンド参照)を入力することで「間接的に」完了にすることもできます。

C-t

C-u C-c
C-t補完や「すでに設定されていれば」さらに速い選択方法を提供するインターフェイスを使用して特定のキーワードを選択します。後者の方法では、TODOの状態に対してキーを割り振る必要があります。詳細は、ファイル毎のキーワードタグの設定を参照してください。


S-<right> / S-<left>
切り替えの機能に似て、後にくるTODOの状態、あるいは前にくるものを選択します。もっとも役に立つのはTODOの状態が2段階以上の場合です。(see TODO拡張).shift-selection-modeとの連携については、衝突も参照してください。変数org-treat-S-cursor-todo-selection-as-state-changeも参照してください。/ t
C-c
/ t     (org-show-todo-key)

ツリーの抽出機能を使ってTODOを確認します(see ツリーの抽出)参照。バッファ全体を折り畳みますが、全てのTODO項目「DONE状態以外の」とその上の見出しの階層を表示します。前置引数をつけることで(もしくは、キーバインドC-c / T)、ある特定のDONE状態の項目も表示させることができます。検索用のキーワードを入力するためのプロンプトが表示されます。さらにキーワードのリストを次のように入力することもできKWD1|KWD2|...、この内のどれかに一致するものが表示されます。前置引数Nを使って、変数org-todo-keywords内のN番目のキーワードを含むツリーを表示することもできます。2回の前置引数を指定すると、すべてのTODO状態「DONEとそれ以外を含む」を見つけることができます。a t

C-c
a t     (org-todo-list) グローバルTODOリストを表示します。すべての「DONE状態以外の」TODOアイテムをすべてのアジェンダファイル(see アジェンダビュー)から集めて、一つのバッファに表示します。その新しくできたバッファは、agenda-modeで表示され、確認や修正を加えるためのコマンドも提供されます。(see アジェンダのコマンド). See グローバルなTODOリスト.を参照してください。
S-M-<RET>     (org-insert-todo-heading)
新しいTODOを現在の位置にあるTODOの前に入力します。

TODOの状態の変更は、タグの変更をすることになることがあります。詳細については、オプションorg-todo-state-tags-triggersのドキュメント文字列を参照してください。


Next: , Previous: TODOの基本, Up: TODOアイテム

5.2 TODOキーワードの拡張的な使い方

デフォルトでは、マークされたTODOの状態は、TODOとDONEの2つしかありません。さらにOrg-modeは、TODOキーワードorg-todo-keywordsに指定されています。」を使って、より複雑にTODOアイテムを分類できます。特別な設定により、TODOキーワードシステムは、ファイルによって異なる働きにすることできます。

注記、タグは見出しと特にTODOアイテムを分類するもう一つの方法です。(see タグ).


Next: , Previous: TODO拡張, Up: TODO拡張

5.2.1 ワークフローの状態としてのTODOキーワード

TODOキーワードを使用して、アイテムの連続した異なる状態を表すことができます。例えば、40:

     (setq org-todo-keywords
       '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))

縦線は、TODOキーワード「アクションが必要な状態」とDONE状態「アクションが必要ない状態」を分けます。縦線が指定されていない場合は、最後の状態が、DONE状態として使用されます。 この設定により、コマンドC-c C-tで、TODOからFEEDBACKへ、それからVERIFY、最後にDONE、DELEGATEDというように順番に切り替えます。前置引数を使用することで、特定の状態を即座に選択することもできます。例えばC-3 C-c C-tと入力すると、すぐに3番目のVERIFYに変更することができます。もしくは、S-<left>により、逆の方向に順番に切り替えることもできます。もしも、たくさんのキーワードを定義した場合は、バッファ内補完機能(see 補完)か特別な一つのキーによる選択により特定のキーワードをバッファに入力することができます。(see TODOの状態への素早い対応手段)TODOの状態の変更は、タイムスタンプと共にログをとることができます。(より詳しい情報は作業の状態変化の追跡を参照)


Next: , Previous: ワークフローの状態, Up: TODO拡張

5.2.2 種類としてのTODOキーワード

TODOキーワードの2つ目の使い方として、いろいろな種類のやるべき事として表す使用法です。例えば、項目を「仕事」または「家」を示すようにも使えます。もしくは、複数の人と同じプロジェクトに参加するとき、その中の何人かに彼らの名前をTODOキーワードとして使って直接やるべき事を割り当てたいかもしれません。これは、以下のように設定します。:

     (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))

この場合、それぞれのキーワードは作業の順序を表しているのではなく、別々のタイプを表すことになります。そのため、通常の作業の流れとしてタスクを一人に割り振ることになり、その後のDONEになります。Org-modeは、このような形式をサポートするため、「C-c C-t」コマンドの動作が少し変化します(41)。まずは、適当なタイプを選択するのに、繰り返し押すことで、順番にキーワードの名称が表示されます。しばらく間をおいてその項目に戻ってきて、「C-c C-t」を再度実行すると、そのときは、すぐDONEに切り替えられます。前置引数か補完を使えば、適当なタイプをすぐに選ぶことができます。さらにC-c / tに前置引数を指定することにより、抽出されたツリーの中で特定のTODOタイプの項目を確認することもできます。例えば、Lucyがやらねばならないにすべての項目を見るには、「C-3 C-c / t」を実行します。すべてのアジェンダファイルの中からLucyの項目を一つのバッファに集約するには、グローバルなtodoリストを作成し、前置引数を使用します:「C-3 C-c a t」、


Next: , Previous: タスクの種別, Up: TODO拡張

5.2.3 同一ファイル内での複数のキーワードセット

時には、異なるセットのTODOキーワードを同時に使いたい場合があるかもしれません。例えば、通常のTODO/DONEを使用しつつ、バグフィックスのワークフロー、さらにアイテムがキャンセルをされたことを表すもう一つの状態を使用したい場合などです「つまりDONEではないが、次のアクションが必要ない場合」。その場合の設定は次のようになります:

     (setq org-todo-keywords
           '((sequence "TODO" "|" "DONE")
             (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
             (sequence "|" "CANCELED")))

キーワードは、すべて異なるようにすべきで、そうすることでOrg-modeが、今入力されたキーワードから次に続くものを認識するのに役立ちます。この設定では、C-c C-tは、サブグループ内だけで働きます。つまりDONEから(何も無い状態)からTODOへ、そしてFIXEDから(何も無い状態)からREPORTへ。その為、まず使いたいサブグループを選ぶ方法が必要です。当然通常行うようにキーワードをタイプするか、補完、または次のコマンドを使うこともできます:

C-u C-u C-c C-t
C-S-<right>
C-S-<left>
これらのキーは、あるTODOのサブグループから次へとジャンプします。上の例では、C-u C-u C-c C-tまたは、C-S-<right>は、TODODONEからREPORT、そして、二番目のサブグループのどれかの状態からCANCELEDへジャンプします。注意としてC-S-キーバインディングは、shift-selection-mode (see 衝突)と衝突します。
S-<right>
S-<left>
S-<<left>>S-<<right>>は、すべてのサブグループのすべてのキーワードに切り替えいきます。例えば、上記の例では、S-<<right>>は、DONEに切り替えられ、さらにREPORTになります。shift-selection-modeと連携させる方法については、衝突を参照してください。>


Next: , Previous: キーワードセット, Up: TODO拡張

5.2.4 TODOの状態への素早い対応手段

もし、切り替えせずに任意のTODOの状態にすばやく変更したい場合は、キー登録して一文字でその状態に変更できます。それには、各キーワードの後に括弧で括ってセクションキーを割り当てることにより実現できます。例えば:

     (setq org-todo-keywords
           '((sequence "TODO(t)" "|" "DONE(d)")
             (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
             (sequence "|" "CANCELED(c)")))

C-c C-tを押して、選択の為のキーを押せば、その選ばれた状態へ切り替えられます。さらに<SPC>を使って、どのTODOキーワードも削除することができます。42


Next: , Previous: TODOの状態への素早い対応手段, Up: TODO拡張

5.2.5 ファイル別にキーワードを設定する

異なるファイルごとに、TODOの機能をさまざまなの方法で使用できるととても便利です。ファイル単位のローカルな設定をするためには、そのファイルだけに通用するキーワードを特別な行として記入することで設定する必要があります。例えば、前述した2つの例のうちの一つを設定するの場合、次のような行を、そのファイルのどこかで行頭から開始する必要があります。

     #+TODO: TODO FEEDBACK VERIFY | DONE CANCELED

(解釈を明確にするために#+SEQ_TODOと記入してもいいです。しかし、#+TODOと記入するのと同じです。)、もしくは、

     #+TYP_TODO: Fred Sara Lucy Mike | DONE

同時に複数のキーワードグループの設定には:

     #+TODO: TODO | DONE
     #+TODO: REPORT BUG KNOWNCAUSE | FIXED
     #+TODO: | CANCELED

間違いなく正しいキーワードを使うため、そのバッファ内で‘#+’をタイプして、M-<TAB>を使って補完してください。

縦線の後のキーワード「もしくは、縦線が指定されてない場合は、最後のキーワード」は、そのアイテムがいつもDONE「最後のもの」であることを覚えていてください「と言ってもDONE以外のキーワードも使えます」。これらの変更を加えた後、Org-modeに変更を認識させるため、カーソルを変更した場所に置いたままでC-c C-cしてください。43


Next: , Previous: ファイル毎のキーワード, Up: TODO拡張

5.2.6 TODOキーワードのフェイス

Org-modeは、TODOキーワードを特別なフェイスを使ってハイライトします:org-todoは、あるアイテムがアクションを必要とするキーワードであることを指しています。org-doneは、あるアイテムが完了していることを指しています。もし2つ以上の異なる状態を使用しているのであれば、特別なフェイスを使いたくなるかもしれません。これは、変数org-todo-keyword-facesを変更することで可能です。例えば:

     (setq org-todo-keyword-faces
           '(("TODO" . org-warning) ("STARTED" . "yellow")
             ("CANCELED" . (:foreground "blue" :weight bold))))

CANCELEDにあるようにフェイスプロパティのリストを使えば上手くいくはずですが、いつもうまくいっているように見えないかもしれません。必要であれば、特別なフェイスを定義してそれを使うのもいいかもしれません。文字列は、カラーとして解釈されます。変数org-faces-easy-propertiesにより、文字の色にするか、背景色にするか指定できます。


Previous: TODOキーワードのフェイス, Up: TODO拡張

5.2.7 TODO間の関係

Orgファイルの構成「階層とリスト」は、TODOの依存関係の定義を容易にします。通常、親TODOタスクは、すべてのサブタスク「子タスクと定義されている」が終るまでは、DONEにするべきではありません。そして時折、多く「サブ」タスクに対して論理的な順序があるので、あるタスクがその前にあるすべての関連したタスクが終るまで始められないこともあります。もし、変数org-enforce-todo-dependenciesをカスタマイズすれば、Orgは、未完了の子タスクが終わるまでDONEへの状態の変更を防ぎます。さらに、もし、あるアイテムにORDEREDのプロパティが設定されていると、その前の関連したタスクのすべてがDONEになるまで、そのそれぞれの子タスクは、変更できないようになります。ここに例があります:

     * TODO このTODOは、2番が終るまで変更できない。
     ** DONE 1番
     ** TODO 2番
     
     * 親
       :PROPERTIES:
         :ORDERED: t
       :END:
     ** TODO a
     ** TODO b, (a)が終わるのを待つ必要があります。
     ** TODO c, (a)と(b)が終わるのを待つ必要があります。
C-c C-x o     (org-toggle-ordered-property)
ORDEREDプロパティを現在のアイテムに対してトグルします。プロパティが、この動作に使われるのは、タグのように継承するのではなく、現在のアイテムに対してのみ動作させるためです。しかし、もし見やすいようにタグを使ってプロパティの値を記録したいのであれば、変数org-track-ordered-property-with-tagをカスタマイズしてください。C-u C-u C-c C-t
C-u
C-u C-u C-c C-t変更できない状態のものでもTODOの状態を変更します。

変数org-agenda-dim-blocked-tasksを設定すれば、依存関係のせいで閉じることのできないTODOエントリーをアジェンダビューで薄暗いフォントにして表示するか、さらに見えなくすることもできます。(see アジェンダビュー).

チェックボックスを見ることでTODOの状態の変更を妨げることもできます(see チェックボックス)。変数org-enforce-todo-checkbox-dependenciesを設定すれば、チェックされていないチェックボックスをもつエントリーがDONEになるのを妨げることもできます。

もし、より複雑な依存関係の構造が必要であれば、例えば、異なるツリーやファイルのエントリー同士の依存関係、付属モジュールのorg-depend.elを参照してみてください。


Next: , Previous: TODO拡張, Up: TODOアイテム

5.3 進行記録

Org-modeは、TODOアイテムにDONEという完了の印をつけたときや、TODOアイテムの状態を変更したときはいつでも、自動的にタイムスタンプとメモを記録できます。かなり柔軟に設定することが可能で、キーワードごとに設定したり、ファイルやサブツリーごとに設定することもできます。タスクの時間管理についての情報は、作業に費やした時間の計測を参照してください。


Next: , Previous: 進行記録, Up: 進行記録

5.3.1 アイテムの完了

一番基本的な時間の記録機能は、いつTODOアイテムが完了したかを記録することです。これは、次のようにしてください44

     (setq org-log-done 'time)

この後、毎回TODO「未完了」からDONEの状態に移行したとき、見出しの後に‘CLOSED: [タイムスタンプ]’の行が挿入されます。切り替えていく間に一つのエントリーに対してTODOの状態に戻すと挿入された行はまた削除されます。タイムスタンプと一緒にメモも記録したいのであれば、次のようにしてください45

     (setq org-log-done 'note)

この設定によりメモの入力を聞いてきます。そのメモは‘Closing Note’という見出しの下に挿入されます。

タイムライン「see タイムライン」とアジェンダ「see 毎週/毎日のアジェンダ」上で、lキー使用してTODOアイテムと‘CLOSED’タイムスタンプを日ごとに表示することができます。何が完了しているかのサマリも提供されます。


Next: , Previous: アイテムの完了, Up: 進行記録

5.3.2 作業の状態変化の追跡

TODOキーワードがワークフローの状態(see ワークフローの状態)として使われる時に、いつその状態の変化が起きたか記録し、さらにメモを取りたくなるかもしれません。その場合、タイムスタンプかタイムスタンプ付きメモを記録することができます。これらは、見出しの後に一番新しいものを先頭として46項目ごとにリストされ挿入されます。たくさんのメモをとっている場合、そのメモを引き出しの中に入れて隠したいようになるかもしれません「see 引き出し」。その場合、変数org-log-into-drawerを編集してください。オススメの引き出しは、LOGBOOKと呼ばれています。さらにサブツリーのために、この変数の設定もLOG_INTO_DRAWERプロパティを修正すれば、その効果を無視して上書きすることができます。

通常、すべての状態でメモを記録するのはやりすぎになるので、Org-modeは、キーワードごとに設定されると想定します。これは、特別なマーカー‘!’「タイムスタンプ用」、‘@’「メモ用」をキーワードの後に括弧に入れることでできるようになります。例えば、以下のようになります。

     (setq org-todo-keywords
       '((sequence "TODO(t)" "WAIT(w@/!)" "|" "DONE(d!)" "CANCELED(c@)")))

これで、グローバルTODOキーワードとショートカットキーを定義するだけでなく、DONEに状態が変更された際、時間も記録されるようにも定義できます。47そして、WAITかCANCELEDに状態が変化したときにメモが記録されます。WAITの設定は、さらに特別です:斜線の後の‘!’は、その状態に最初に切り替わる際に挿入されるメモの記録だけでなく、WAITの状態から次にの状態に変わる時に、タイムスタンプも記録されます「でもこれは、次の状態が切り替わる時に記録する設定がない場合にのみ有効です」。そのため、WAITからDONEに切り替わる際には影響がありません、なぜならDONEは、タイムスタンプを記録するだけとして設定されているからです。しかしWAITからTODOに戻る場合は、TODOになにも記録するように設定されてなくても、WAITの‘/!’設定が、タイムスタンプを挿入するようになります。

まったく同じ構文を使ってバッファ内のみ有効な設定を使用できます。

     #+TODO: TODO(t) WAIT(w@/!) | DONE(d!) CANCELED(c@)

サブツリーまたは、一つのアイテムだけ局所的にログの設定を定義したい場合は、そのエントリーにLOGGINGプロパティを定義してください。空ではないLOGGINGプロパティは、すべてのログの設定をnilにリセットします。この後、lognotedonelogrepeatのようなSTARTUPキーワード、そしてTODO(!)のような状態に特化した設定を追加して、特定のツリーに対してログを開始するようにできます。例えば

     * TODO 各状態のタイムスタンプだけをログを取る
       :PROPERTIES:
       :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
       :END:
     * TODO WAITに切り替えられ、さらに繰り返されたときだけログを取る
       :PROPERTIES:
       :LOGGING: WAIT(@) logrepeat
       :END:
     * TODO 何もログを取らない
       :PROPERTIES:
       :LOGGING: nil
       :END:


Previous: 作業の状態変化の追跡, Up: 進行記録

5.3.3 習慣の追跡

Org-modeには、「habits(習慣)」と呼ばれるTODOの特別なカテゴリーの一貫性を記録するための機能があります。habitには、以下の性質があります:

  1. 変数org-modulesをカスタマイズすることでhabitsモジュールを有効にしてある。
  2. habitは、TODO一種であり、TODOキーワードを使い未解決を表します。
  3. プロパティSTYLEに、habitを値として定義してある。
  4. このTODOは、スケジュールされた日付があり、通常.+スタイルで繰り返される間隔を表します。++スタイルは、時間制限があるような場合に有効でしょう。例えば、週末にしなければいけないことなどです。+スタイルは、遅れることがあるような通常の習慣ではないような場合「例:週次報告書」に適しています。
  5. このTODOは、最短から最長の期間を‘.+2d/3d’のようなシンタックスで指定できます。この例の場合、このタスクを少なくともで3日ごとか、多くて2日ごとにこなすと指定しています。
  6. 記録されていたデータが一貫性のあるグラフに表記されるように、状態のログを取るDONEを使用できるようにしておく必要があります。使用できるようになっていない場合は、エラーにはなりませんが、一貫性を表すはずのグラフがまったく意味のないものになります。

上記にある定義が実際にはどのようになるか分かってもらうために、ここに経過の記録情報と共に実際のhabitがあります。

     ** TODO 髭剃り
        SCHEDULED: <2009-10-17 Sat .+2d/4d>
        - State "DONE"       from "TODO"       [2009-10-15 Thu]
        - State "DONE"       from "TODO"       [2009-10-12 Mon]
        - State "DONE"       from "TODO"       [2009-10-10 Sat]
        - State "DONE"       from "TODO"       [2009-10-04 Sun]
        - State "DONE"       from "TODO"       [2009-10-02 Fri]
        - State "DONE"       from "TODO"       [2009-09-29 Tue]
        - State "DONE"       from "TODO"       [2009-09-25 Fri]
        - State "DONE"       from "TODO"       [2009-09-19 Sat]
        - State "DONE"       from "TODO"       [2009-09-16 Wed]
        - State "DONE"       from "TODO"       [2009-09-12 Sat]
        :PROPERTIES:
        :STYLE:    habit
        :LAST_REPEAT: [2009-10-19 Mon 00:36]
        :END:

このhabitが表しているのは、髭剃りを多くて2日ごとか「SCHEDULEDにより指定された日付と繰り返される間隔」、少なくとも4日ごとにする。もし、今日が15日とすると、このhabitは、二日後の10月17日にアジェンダに表示されて、4日後の19日には、期限切れとして表示されます。

habitsの本当に使い易いところは、定期性グラフと表示されることです。これは、過去にどれぐらいタスクが定期的に完了したかを見るためのものです。このグラフは、毎日過去3週間のタスクが完了したかを色分けして表示します。各色は、以下を表します:

まだ、その日までにタスクが完了してなくていい場合。
その日に完了できたはずのタスクの場合。
明日になると期限切れになるタスクの場合。
その日に期限切れのタスクの場合。

日ごとの色分けだけでなく、その日に終わったタスクに関してはアスタリスクでマークされ、感嘆符が、グラフ中の今日の日付の部分に付きます。

アジェンダ上でhabitsが表示方法を変える幾つかの設定変数があります。

org-habit-graph-column
定期的グラフを表記させるバッファ列。これにより指定された列にある文字列を上書きします。そのため、habitのタイトルを短く要点を付くようにするといいでしょう。
org-habit-preceding-days
今日より前に、定期的グラフに何日分の日付を表示するかの指定。
org-habit-following-days
今日より後に、定期的グラフに何日分の日付表示するかの指定。
org-habit-show-habits-only-for-today
nil以外が指定されている場合、habitsを今日のアジェンダビューだけに表示する。これは、初期値で真に設定されています。

最後に、アジェンダバッファでKを押すことによりhabitsを一時的に使用不可にし、まったく表示させないようにできます。もう一度Kを押すと元にもどります。例えば、もし特定の前後の内容によてのみ必要なhabitsの場合は、タグのフィルタリングの影響も受けます。


Next: , Previous: 進行記録, Up: TODOアイテム

5.4 プロパティ

もし、Org-modeよく使うのであれば、最終的にTODOアイテム量が増え、優先順位付けをした方がいいとなるかもしれません。優先順位付けはTODOアイテムの見出しに、次のように優先順位クッキーを置くことで可能になります:

     *** TODO [#A] サム フォーチュンに手紙を書く。

初期値としてOrg-modeは、次の3つの優先順位付けをサポートします:‘A’、‘B’、‘C’。‘A’が一番高い優先度です。クッキーなしの場合は、‘B’の優先度として扱われます。優先順位付けは、アジェンダの順番を付けるときのみ影響します。「see 毎週/毎日のアジェンダアジェンダ外では、Org-modeで継承されたりしません。クッキーは、変数org-priority-facesをカスタマイズすることにより、特別なフェイスを使ってハイライトすることもできます。

優先順位付けどんなアウトラインモードにも付けるとができます。つまりTODOアイテムである必要はありません。

C-c ,
現在の見出しの優先順位付けをする「org-priority」。このコマンドは、優先順位付けのための文字‘A’、‘B’、または、‘C’を聞いてきます。その代わりに<SPC>を押すと、優先順位付けのクッキーが見出しから削除されます。優先順位は、タイムラインまたは、アジェンダバッファからも,コマンドで遠隔的に変更できます。「see アジェンダのコマンド」。
S-<up>     (org-priority-up)
S-<down>     (org-priority-down)
現在の見出し優先度を上下する。48.これらのキーはタイムスタンプを修正するのにも使うので注意してください。「see タイムスタンプの作成shift-selection-modeとの相互利用に関しては次を参照してください。衝突

変数org-highest-priorityorg-lowest-priorityorg-default-priorityを設定することで、変更できる優先度の範囲を変えることができます。バッファごとに、「上限、下限、既定値」の設定を以下のようにすることができます。「必ず一番上の優先度の文字が、一番下の優先度よりもアルファベットの並びで前の文字であるようにしてください。」:

     #+PRIORITIES: A C B


Next: , Previous: プロパティ, Up: TODOアイテム

5.5 タスクをサブタスクに細分化する。

通常、大きなタスクは小さくて管理しやすいサブタスクに細分化することをお勧めします。これはTODOアイテムの下にアウトラインツリーをさらに詳細なサブタスクをそのツリーを付けて作成することで可能です。49すでに完了したサブタスクの進捗状況を表示してさせておくには、‘[/]’か‘[%]’ヘッドラインのどこかに挿入してください。これらのクッキーは、サブタスクのTODOの状態が変わるかクッキー上でC-c C-cを押すたびに更新されます。例えば:

     * パーティーの準備をする [33%]
     ** TODO 出席者に電話する [1/2]
     *** TODO ピーター
     *** DONE サラ
     ** TODO 食べ物を買う
     ** DONE 近所の人と話す

もし、見出しがチェックボックスと子TODOを両方持っていた場合、統計クッキーは、あいまいなものになります。この問題を解決するには、COOKIE_DATAプロパティを‘checkbox’か‘todo’に設定してください。

もし統計クッキーに「直下のTODOだけでなく」すべてのサブツリーのTODOエントリーを含めたい場合は、変数org-hierarchical-todo-statisticsを設定してください。これを一つのサブツリーに行うには、‘recursive’というキーワードをCOOKIE_DATAプロパティの値として設定してください。

     * 親キャプチャ統計 [2/20]
       :PROPERTIES:
       :COOKIE_DATA: todo recursive
       :END:

もしすべての子タスクが終了後、TODOエントリーを自動的にDONEに切り替えたい場合は、以下の設定を行なってください:

     (defun org-summary-todo (n-done n-not-done)
       "すべてのサブツリーが終了するとDONEに切り替え、その他の場合は、TODOになする。"
       (let (org-log-done org-log-states)   ; 記録「logging」を終了
         (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
     (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)

その他の方法としては、チェックボックスをつかって「階層化された」多量のサブタスクがいくつあるか調べることもできます。「see チェックボックス


Previous: タスクの分割, Up: TODOアイテム

5.6 チェックボックス

プレーンなリスト50「see エントリー中の階層構造」は、‘[ ]’で開始することでチェックボックスにすることができます。この機能は、TODOアイテムに似ていますが「see TODOアイテム」、より気軽につかえます。チェックボックスは、グローバルTODOリストに追加されません。そのためタスクを分岐するのに便利です。もしくは、買い物リストに使えます。チェックボックスをチェックした状態するには、C-c C-cを使ってください。もしくは、マウスでクリックしてください。「Piotr Zielinskiのorg-mouse.elに感謝」。

以下は、チェックボックスリストの例です:

     * TODO パーティーの準備 [2/4]
       - [-] みんなに連絡 [1/3]
         - [ ] ピーター
         - [X] サラ
         - [ ] サム
       - [X] 食べ物を注文
       - [ ] どんな音楽を掛けるか考える
       - [X] 近所の人と話す

チェックボックスは、階層化に対応しています。そのため、もしあるチェックボックス下の項目が複数のチェックボックスである場合、チェックボックスが全くチェックされていないか、いくつかされているか、全てされているかによりその内の一つのチェックボックスをチェックした状態にすると親チェックボックスに影響します。

最初と二列目の‘[2/4]’と‘[1/3]’はクッキーであり、いくつのチェックボックスがそのエントリーでチェックされているかとそのすべてのチェックボックス数が表示されています。これにより、いくつのチェックボックスが残っているか、折りたたまれていても分かるようになっています。クッキーは見出しかプレーンなリスト「の最初の列」に置くことができいます。各クッキーは、クッキーのある見出し/項目の直下にある子構造であるチェックボックスを表しています。51自分でクッキーを‘[/]’もしくは、‘[%]’をタイプして入力しなければなりません。‘[/]’を入力すると上記したように、‘m個の内のn個’となります。‘[%]’の場合は、何パーセントのチェックボックスがチェックされているかが情報として得られます。「上記の例では、それぞれ‘[50%]’と‘[33%]となります」’. 見出しの下では、クッキーは、見チェックボックスか子TODOの状態の数を数えます。また、最後の変更に基づいて表示されます。この問題を解決するには、プロパティCOOKIE_DATAを‘checkbox’か‘todo’に設定してください。

アウトラインノードにORDEREDプロパティが設定されている場合、チェックボックスは、連続でチェックされていなければなりません。上部のチェックボックスがチェックされていない状態でその下部のチェックボックスをチェックしようとするとエラーがスローされます

以下のコマンドでチェックボックスを操作できます:

C-c
C-c
C-c     (org-toggle-checkbox) チェックした状態をトグルするか「前置引数と実行すると」チェックボックスを作成します。ダブル前置引数だと、‘[-]’が設定されます。これは、中間の状態を表します。C-x C-b
C-c
C-x C-b     (org-toggle-checkbox) チェックした状態をトグルするか「前置引数と実行すると」チェックボックスを作成します。ダブル前置引数だと、‘[-]’が設定されます。これは、中間の状態を表します。
  • アクティブなリージョンがある場合は、そのリージョンの最初のチェックボックスをトグルします。そして残りのボックスを最初のボックスと同じ状態にします。前置引数と使用すると、リージョン内のすべてのチェックボックスを作成するか削除します。
  • カーソルが見出し上にある場合、現在の見出しから次の見出しのリージョン内のチェックボックスをトグルします。「つまりサブツリー全体ではない
  • アクティブなリージョンがなければ、その場所のチェックボックスをトグルします。

M-S-<RET>     (org-insert-todo-heading)
新しい項目をチェックボックスと共に挿入します。これは、プレーンなリスト(see エントリー中の階層構造)内にカーソルがすでにある場合にのみ動作します。C-x o
C-c
C-x o     (org-toggle-ordered-property)

ORDEREDプロパティを設定します。これは、連続でチェックボックスがチェックされていなければならないと指定します。プロパティが使用されます、なぜならこの指定はローカルに影響するべきでタグのように継承されるないからです。しかし、見やすいようにタグを使ってプロパティの値を記録したい場合は、org-track-ordered-property-with-tag変数をカスタマイズしてください。#

C-c
#     (org-update-statistics-cookies) 現在のアウトライン内の統計クッキーを更新します。C-u引数と呼び出されるとファイル全体を更新します。C-c C-cでチェックボックスをトグルした場合とM-S-<RET>で新しいチェックボックス項目が作成された場合、チェックボックス統計クッキーは、自動的に更新されます。TODO状態を変更すると統計クッキーも更新されます。手動でチェックボックスや項目を削除したり、それらを追加したり変更した場合は、このコマンドをつかって状態を更新してください。もしくは、単にコマンドを二度トグルしてください「C-c C-cチェックボックスを作成など」。


Next: , Previous: TODOアイテム, Up: Top

6 タグ

相互に関係する情報のためにコンテクストやラベルをつけるためのすばらしい方法の一つは見出しにタグを対応づけることです.Org-modeはタグについて幅広く対応しています.

全ての見出しはタグのリストを取ることができて,タグは見出しの最後に置かれます.タグはいわゆる普通の単語で利用される文字や数字,‘_’,‘_’を利用できます.タグはコロンで始まりコロンで終わらなければなりません.例えば,‘:work:’です.複数のタグはこのように書きます.‘:work:urgent:’.タグはデフォルトでは太字のフェイスで見出しと同じ色で表示されます.TODOのキーワード(see TODOキーワードのフェイス)と同じように変数org-tag-facesを変更することで特別なフェイスを設定することも可能です.


Next: , Previous: タグ, Up: タグ

6.1 タグの継承

タグはアウトラインツリーの階層構造を利用します.もしある見出しに特定のタグがついていれば,全ての下位レベルにタグが継承されます.以下に例を示します:

     * Meeting with the French group      :work:
     ** Summary by Frank                  :boss:notes:
     *** TODO Prepare slides for him      :action:

最後の見出しには明示的にマークされていない,‘:work:’,‘:boss:’,‘:notes:’,‘:action:’のタグがついています.ファイル全体の見出しに継承される見出しをつけることもでき,これは仮定的にレベル0の見出しとして定義され,ファイル全体に反映させることができます.この例を次に示します52:

     #+FILETAGS: :Peter:Boss:Secret:

特定のタグについてタグの継承を制限するには変数org-use-tag-inheritanceorg-tags-exclude-from-inheritanceを利用します.

タグの継承が有効の場合にタグの検索で見出しが一致したとき,その見出しの全てのサブツリーも同じように一致します53.始めにタグが一致したサブツリーのみを表示したいのであれば,変数org-tags-match-list-sublevelsを設定してください (非推奨).


Next: , Previous: タグの継承, Up: タグ

6.2 タグの設定

簡単に見出しの最後へタグは入力することができます.コロンの次にM-<TAB>でタグの補完をします.他にもタグの入力のための特別なコマンドが以下に続きます:

C-c C-q     (org-set-tags-command)
現在の見出しに新しくタグを入力します.org-modeは補完を始めるか,特別なワンキーのインタフェースを提示します.ワンキーのインタフェースは後で説明します.タグを入力し,<RET>キーをタイプするとタグが挿入され,org-tags-columnの列に整列されます.数引数(C-u prefix)をつけて呼び出すと,カレントバッファの全てのタグがきれいに見えるように整列されます.TAGSは自動的に昇格や降格した後に再整列され,TODOの状態が変わります(see TODOの基本).C-c
C-c
C-c     (org-set-tags-command) カーソルが見出し行にある時はC-c C-qと同じ動作をします.

Org-modeはlist of tagsに基づくタグの挿入をサポートしています.このリストはデフォルトでは動的に構築され,バッファで使われているタグを全て含みます.変数org-tag-alistにタグのリストを設定することでグローバルにタグを指定しておくこともできます.デフォルトのタグを次のようにファイルに記述することでもデフォルトのタグリストを設定できます.

     #+TAGS: @work @home @tennisclub
     #+TAGS: laptop car pc sailboat

もし変数org-tag-alistにタグを設定することでタグリストがグローバルに定義されていたとして,そのリストよりもファイルから生成された動的なタグリストを利用したければ,次のような空のTAGSオプションをファイルに指定します

     #+TAGS:

もし全てのファイルで使うつもりのタグや,ファイルごとのTAGSオプションで定義されたタグの集合を優先したければ,変数org-tag-persistent-alistに明記すればよい.これを止めるにはファイルごとにSTARTUPオプションを次のように書きます.

     #+STARTUP: noptag

デフォルトでOrg-modeはタグの入力に標準的なミニバッファでの補完を使います.しかしfast tag selectionと呼ばれるもう一つの速い実装もあります.これはタグの選択や除外をワンキーで可能にするものです.これをうまく動かすためにあなたはユニークな文字を良く使うタグにアサインするべきです.変数org-tag-alist.emacsに設定することでグローバルにこの機能を使うことができます.例えば複数のファイルの多くの項目に‘:@home:’タグをつけるという需要があったとします.この場合次のような設定なるでしょう.

     (setq org-tag-alist '(("@work" . ?w) ("@home" . ?h) ("laptop" . ?l)))

もしそのタグが作業中のファイルにおいてのみふさわしいのであれば,かわりに次のようにTAGSオプションを書くこともできます.

     #+TAGS: @work(w)  @home(h)  @tennisclub(t)  laptop(l)  pc(p)

タグインタフェースはスプラッシュウィンドウにとりうるタグを表示します.もし特定のタグの後に新しい行から始めたいのであればタグリストに‘\n’を挿入します.

     #+TAGS: @work(w)  @home(h)  @tennisclub(t) \n laptop(l)  pc(p)

もしくは2行に分けて書きます.

     #+TAGS: @work(w)  @home(h)  @tennisclub(t)
     #+TAGS: laptop(l)  pc(p)

また次のようにブレース(波括弧{})を使うことで相互排除したグループにタグをまとめることもできます.

     #+TAGS: { @work(w)  @home(h)  @tennisclub(t) }  laptop(l)  pc(p)

これは‘@work’,‘@home’,‘@tennisclub’のうち少なくとも一つは選択されることを意図しています.そのようなグループを複数持つことも可能です.

これらの変更を有効にするために,その行にカーソルを置いて<C-c C-c>を押すことを忘れないようにしてください.

これらの相互排除グループを変数org-tags-alistで設定するためには,ブレースの代わりにダミーのタグとして:startgroup:endgroupを使わなければなりません.同様に改行を表現するためにダミーのタグとして:newlineを使うことができます.直前の例を設定すると次のような記述になります.

     (setq org-tag-alist '((:startgroup . nil)
                           ("@work" . ?w) ("@home" . ?h)
                           ("@tennisclub" . ?t)
                           (:endgroup . nil)
                           ("laptop" . ?l) ("pc" . ?p)))

もし少なくとも一つのタグに選択用キーが設定されていると,C-c C-cが押されたときに自動的に特別なインタフェースが表示されます.そのインタフェースは継承されたタグ,現在の見出しのタグ,全ての有効な付随するタグを提示します54.このインタフェースでは以下のキーが利用できます.

a-z...
アサインされたキーを押すことで現在の行にタグが追加または削除されます.相互排除グループのタグを選択することでそのグループの他のタグは無効になります.
<TAB>
たとえあらかじめ定義されていないタグでも,ミニバッファでタグを入力します.バッファ内の全てのタグを補完することができます.コンマで区切ることで複数のタグを追加することも可能です.


<SPC>
この行のタグを全てクリアします.
<RET>
変更された集合を確定します.
C-g
変更を破棄します.
q
もしqがタグにアサインされていなければC-gのように変更を破棄します.
!
相互排除しているタグのグルーピングを無効にします.これはそのグループ内のタグを(例外的に)複数個,タグづけるときに使います.
C-c
次の変更後の自動終了をトグルします(下記参照).もしもしエキスパートモードを使っているのであれば,最初のC-cが選択ウィンドウに表示されます.

このメソッド(特別なインタフェース)であなたはとても少ないタイプで見出しにタグをつけられます.上記の設定で,現在のタグをクリアして,‘@home’,‘laptop’,‘pc’のタグをつけるには次のように入力します: C-c C-c <SPC> h l p <RET>.タグ‘@home’を‘@work’へ付け替えるにはC-c C-c w <RET>とタイプするか代わりにC-c C-c C-c wとタイプします.定義されていないタグ‘Sarah’を追加するにはC-c C-c <TAB> S a r a h <RET> <RET>すればよいのです.

もしタグを決定するのをただひとつのキーを押すだけにする必要があれば,変数org-fast-tag-selection-single-keyを設定します.これによってタグを選択するキーを押した後にRETを押す必要がなくなります.もしキー入力が必要であればC-cで無効化できます(つまりタグの選択を始めるためにC-c C-c C-cの代わりにC-c C-cを使います).もしこの変数にexpertを設定すれば,タグのワンキー選択用の特別なウィンドウを表示しなくなります.C-cを追加してはじめてそのウィンドウが表示されるようになります.


Previous: タグの設定, Up: タグ

6.3 タグの検索

一度タグシステムが設定されると,関連する情報を特殊なリストに集めるのに使われます.

C-c / m or C-c \     (org-match-sparse-tree)
タグ検索にマッチした全てのツリーを抽出する.C-uのプレフィックスをつけて呼び出すことで,TODOの見出しのみに限定する.a m
C-c
a m     (org-tags-view)

全てのアジェンダファイルにおいてタグにマッチしたものの一覧を作成する.See タグとプロパティとのマッチング. M

C-c a
M     (org-tags-view)

全てのアジェンダファイルにおいてタグにマッチしたものの一覧を作成する.ただしTODOの項目に限定し,サブツリーの項目の検索を強制する(変数org-tags-match-list-sublevels参照).

これらのコマンドは全てマッチ文字列を問います.マッチ文字列はタグ‘boss’と‘urgent’を含み,‘project1’を含まないものを検索する‘+boss+urgent-project1’や,タグ‘Kathy’または‘Sally’がつけられているエントリーを検索する‘Kathy|Sally’のような基本的な論理構造が使用可能です.検索文字列の全ての構文はリッチでTODOキーワードやエントリーのレベル,プロパティにもマッチします.完全な説明と多くの例はタグとプロパティとのマッチングを見てください.


Next: , Previous: タグ, Up: Top

7 プロパティ(属性)とカラム(列)

プロパティはエントリーに関連付けられたキーと値を持つペアのあつまりです。Org-modeでは、プロパティのための主要なアプリケーションが2つあります。1つ目は、プロパティはタグのようですが値を持つことです。2つ目は、Org-modeのバッファで(とても基本的な)データベース機能を実装するためにプロパティを使えることです。1つ目のアプリケーションの例に、ソフトウェアのリリース計画とバグを文章化するファイルを管理することを想像して下さい。:release_1::release_2:のようなタグを使う代わりに、:Release:というプロパティを使い、異なるサブツリーの中に1.02.0のような異なる値を持たせれば良いのです。プロパティの2つ目のアプリケーションの例に、音楽CDのトラックを管理する事を想像して下さい。そこではアルバム名、アーティスト名、リリース日、トラックの数などがプロパティとなるでしょう。

プロパティはカラムビューで便利に編集、閲覧できます(see カラムビュー)。


Next: , Previous: プロパティとカラム, Up: プロパティとカラム

7.1 プロパティの表記法

プロパティはキーと値のペアです。それらは、名前PROPERTIESを持つ特別な引き出し(see 引き出し)の中にある必要があります。各プロパティは最初に(コロンで囲われた)キーを持ち、その後に値を持つ1行で記述されます。以下に例を示します。

     * CD collection
     ** Classic
     *** Goldberg Variations
         :PROPERTIES:
         :Title:     Goldberg Variations
         :Composer:  J.S. Bach
         :Artist:    Glen Gould
         :Publisher: Deutsche Grammophon
         :NDisks:    1
         :END:

プロパティ‘:Xyz_ALL:’のように設定する事で、特定なプロパティ‘:Xyz:’の許容値を定義できます。この特別なプロパティは、もしレベル1のエントリに設定されたならば全てのツリーに適用されるように継承されます。許容値を定義すると、対応するプロパティの設定が簡単になり、入力ミスを防ぐ事ができます。CDコレクションの例では、以下のように1つのボックスの中に発売元とディスクの数をあらかじめ定義できます。

     * CD collection
       :PROPERTIES:
       :NDisks_ALL:  1 2 3 4
       :Publisher_ALL: "Deutsche Grammophon" Philips EMI
       :END:

1つのファイル全体で継承されるプロパティを設定したいならば、以下の行のようにします。

     #+PROPERTY: NDisks_ALL 1 2 3 4

グローバル変数org-global-propertiesに設定するプロパティの値は全てのOrg-modeのファイルに継承されます。

以下のコマンドはプロパティを操作する助けとなります。

M-<TAB>     (pcomplete)
行にある最初のコロンのうしろで、プロパティのキーを補完します。現在のファイルで使われた全てのキーは可能な補完候補として提供されます。C-x p
C-c
C-x p     (org-set-property) プロパティを設定します。プロパティ名と値の入力を促します。必要なら、プロパティの引き出しがさらに作られます。
M-x org-insert-property-drawer
現在のエントリーの中にプロパティの引き出しを入れます。引き出しはエントリーのはじめに入りますが、デッドラインのような計画情報を持つ行の後となります。C-c
C-c
C-c     (org-property-action) プロパティの引き出しの中にカーソルがあるとき、プロパティコマンドを実行します。C-c s
C-c
C-c s     (org-set-property) 現在のエントリにプロパティを設定します。プロパティと値の両方共、補完を使って入力できます。
S-<right>     (org-property-next-allowed-value)
S-<left>     (org-property-previous-allowed-value)
ポイントのプロパティを次/前の許容値に切り替えます。C-c d
C-c
C-c d     (org-delete-property) 現在のエントリからプロパティを削除します。D
C-c C-c
D     (org-delete-property-globally) プロパティを現在のファイルにある全てのエントリからグローバルに削除します。C-c c
C-c
C-c c     (org-compute-property-at-point) ポイントにあるプロパティを最も近い列のフォーマット定義からオペレータやスコープを使って計算します。


Next: , Previous: プロパティの表記法, Up: プロパティとカラム

7.2 スペシャルプロパティ

以前の章で述べたTODO状態や、エントリの優先度のようなスペシャルプロパティは、Org-modeの機能への別のアクセス方法を提供します。このインターフェイスはカラムビュー(see カラムビュー)にそれらの状態を含めたり、クエリにそれらを使ったりする事で生じます。次のプロパティ名は特別(:CATEGORY:を除いて)で、プロパティの引き出しでキーとして使われません。

     TODO         エントリのTODOキーワード
     TAGS         見出しに直接定義されたタグ
     ALLTAGS      継承されたタグも含む全てのタグ
     CATEGORY     エントリのカテゴリ
     PRIORITY     1文字の文字列である、エントリの優先度
     DEADLINE     山括弧(<>)のないデッドライン時刻文字列
     SCHEDULED    山括弧(<>)のないスケジュールタイムスタンプ
     CLOSED       いつこのエントリがクローズされたか
     TIMESTAMP    エントリで最初のキーワードのないタイムスタンプ
     TIMESTAMP_IA エントリで最初のアクティブでないタイムスタンプ
     CLOCKSUM     サブツリーでのCLOCKインターバルの合計。org-clock-sum\n
                  が値を計算するために最初に実行されなければならない。\n
     BLOCKED      "t" であれば、タスクが子供や兄弟に現在ブロックされている
     ITEM         エントリの内容
     FILE         エントリのあるファイル名


Next: , Previous: スペシャルプロパティ, Up: プロパティとカラム

7.3 プロパティの検索

プロパティに基づいて選択した特別なリストやツリーの抽出を作成するために、タグ検索(see タグの検索)の場合と同じコマンドが使えます。

C-c / m or C-c \     (org-match-sparse-tree)
全てのマッチしたエントリについて抽出したツリーを作成します。前置引数C-uをつけると、TODO行でない見出しは無視します。
C-c a m     (org-tags-view)
全てのアジェンダファイルからマッチするタグ・プロパティのグローバルなリストを作成します。 See タグとプロパティとのマッチング.
C-c a M     (org-tags-view)
全てのアジェンダファイルからマッチするタグのグローバルなリストを作成します。しかし、TODO項目と下位項目の強制チェック(変数org-tags-match-list-sublevels参照)のみチェックします。

検索文字列のための文法は、タグとプロパティとのマッチングで説明されています。

1つのプロパティに基いて抽出したツリーを作成するための特別なコマンドもあります。

p
C-c /
pプロパティの値に基づいて抽出したツリーを作成します。これは最初にプロパティ名、次にその値の入力を促します。抽出したツリーは与えられた値でこのプロパティを定義する全てのエントリで作られます。その値を大括弧で括っていたならば正規表現として解釈され、プロパティ値に対してマッチします。


Next: , Previous: プロパティの検索, Up: プロパティとカラム

7.4 プロパティの継承

Org-mode文章のアウトライン構造はプロパティの継承モデルを適用しています。ツリーの親があるプロパティを持っているならば、子はこのプロパティを継承します。Org-modeはこれをデフォルトで有効としていません。これはプロパティの検索を遅くしてしまうためとあまり必要とされないためです。しかしながら、継承が役立つ場面があるならば、変数org-use-property-inheritanceを設定する事で有効とできます。この変数は、全てのプロパティを親から継承するt、継承されるべきプロパティのリスト、継承されるプロパティにマッチする正規表現を設定できます。もしプロパティが値‘nil’を持つならば、継承検索がこの値で停止しnilを返すように、明示的に未定義のプロパティであると解釈されます。

Org-modeは、継承がハードコードされているプロパティがいくつかあります。少なくともそれらを使う特別なアプリケーションがあります。

COLUMNS
:COLUMNS:プロパティは、カラムビュー(see カラムビュー)のフォーマットを定義します。:COLUMNS:プロパティが定義されているレベルがカラムビューテーブルの開始地点として使われるという意味で継承されます。そして、列表示が有効である場所とサブツリーの場所とは無関係です。
CATEGORIES
アジェンダビュー用です。:CATEGORY:プロパティを通して設定されたカテゴリがサブツリー全体に適用されます。
ARCHIVE
アーカイブ用です。:ARCHIVE:プロパティは、サブツリー全体のアーカイブ位置を定義します(see サブツリーを移動する)。
LOGGING
LOGGINGプロパティは、エントリやサブツリーのログ取得設定について定義します(see 作業の状態変化の追跡)。


Next: , Previous: プロパティの継承, Up: プロパティとカラム

7.5 カラムビュー

アウトラインツリーにあるプロパティを閲覧、編集するための最も良い方法はカラムビューです。カラムビューでは、各アウトラインノードがテーブル行に変換されます。このテーブルにある列がエントリのプロパティへのアクセスです。Org-modeは、各項目の見出し上にテーブル構造をオーバレイすることで列を実装します。見出しはテーブル列に変換されますが、アウトラインツリーの見た目もまだ変えられます。例えば、CONTENTS ビュー(S-<TAB>S-<TAB>、もしくは、カラムビューがアクティブであるときに単純にc)にスイッチする事でコンパクトなテーブルを得られますが、まだ各見出し以下のエントリを開いたり、読んだり、編集したりもできます。また、ツリーの抽出コマンドを実行した後にカラムビューに切り替える事もでき、この方法では選択した項目のみのテーブルを得ます。カラムビューは利用可能な複数のファイルから選択した項目を集めたクエリのあるアジェンダバッファ(see アジェンダビュー)でも動作します。


Next: , Previous: カラムビュー, Up: カラムビュー

7.5.1 カラムの定義

最初にカラムビューを設定するために、カラムを定義する必要があります。これはカラムフォーマット行を定義する事によってなされます。


Next: , Previous: カラムの定義, Up: カラムの定義
7.5.1.1 カラム定義の有効範囲

カラムフォーマットを定義するために、次のように行を記載します。

     #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO

指定したツリーに適用するだけのフォーマットを指定するために、:COLUMNS:プロパティをそのツリーの一番上のノードに追加します。例えば、

     ** カラムビューの最初のノード
        :PROPERTIES:
        :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
        :END:

もし:COLUMNS:プロパティがエントリに現れると、そのエントリ自身とそれ以下のサブツリー全体の列を定義します。列定義は文章の階層構造の一部なので、全てのサブレベルに十分一般的なレベル1の列を定義でき、また、ツリーのより深い部分を編集するとき、より下位の指定された列を定義できます。


Previous: カラム定義の有効範囲, Up: カラムの定義
7.5.1.2 カラム・アトリビュート

列定義は、列の属性の集りです。一般的な定義は以下のようになります。

      %[width]property[(title)][{summary-type}]

パーセントとプロパティ名を除いて、全ての項目はオプションです。個々のパーツは次の意味を持ちます。

     width           列の幅を文字数で指定する整数。
                     省略すると、幅は自動的に決定されます。
     property        この列で編集できるプロパティ。
                     メタデータを示す特別なプロパティがここで許容されます。
                     (see スペシャルプロパティ)
     title     列の見出しテキスト。省略するとプロパティ名が使われます。
     {summary-type}  サマリタイプ。
                             指定すると親ノードの列の値は子から計算されます。
                     サポートされるサマリのタイプは以下です。
                     {+}       この列にある数の和。
                     {+;%.1f}  +’と似ているが、フォーマットが‘%.1f’となる。
                     {$}       通貨。‘+;%.2f’の略。
                     {:}       時刻の合計。HH:MM。数値は時間。
                     {X}       チェックボックスの状態。
                                 子が全て‘[X]’ならば、‘[X]’です。
                     {X/}      チェックボックスの状態。‘[n/m]’。
                     {X%}      チェックボックスの状態。‘[n%]’。
                     {min}     列の最も小さい数値。
                     {max}     最も大きい数値。
                     {mean}    数の算術平均。
                     {:min}    列に最も小さい時間数値。
                     {:max}    最も大きい時間数値。
                     {:mean}   時刻の算術平均。
                     {@min}    最小時刻(日/時間/分/秒)。
                     {@max}    最大時刻(日/時間/分/秒)。
                     {@mean}   時刻の算術平均(日/時間/分/秒)。
                     {est+}    低-高見積りを追加。

含めるあらゆるプロパティに1つのサマリタイプしかを持てないという事に気をつけて下さい。同じプロパティを参照する後にくる列は全て同じサマリの情報を表示します。

est+サマリタイプはもう少し説明が必要です。それは低-高の幅で表現される見積りを組み合わせるために使われます。例えば、特定のタスクが5日必要であると見積る代わりに、どのくらいの仕事が必要とされるか公正に確実に見積もるならば5日から6日と、それをなすのに必要な時間が本当に分からないならば、1-10日と見積るでしょう。両者の幅の平均は5.5日ですが、前者はより予測可能な発言を示しています。

そのような見積りを組み合わせるとき、単純に低と高を追加すると非現実的な幅の結果を作ります。代わりに、est+は合計から最終的な見積りを生成する事で統計的意味やサブタスクの分散を追加します。例えば、10個のタスクがあるとき、各々が0.5から2日の仕事であると見積られました。全てが非常によく進む、もしくは悪く進むと期待する事による計算で、ストレートな追加は5日から20日の見積りであると生成します。対照的に、est+は全ての仕事より現実的に10日から15日であると見積ります。

以下は許可値にそって列定義を計算する例です。

     :COLUMNS:  %25ITEM %9Approved(Approved?){X} %Owner %11Status \55
                        %10Time_Estimate{:} %CLOCKSUM
     :Owner_ALL:    Tammy Mark Karl Lisa Don
     :Status_ALL:   "In progress" "Not started yet" "Finished" ""
     :Approved_ALL: "[ ]" "[X]"

最初の列、‘%25ITEM’はその項目の25文字を意味します。すなわち見出しのです。おそらく常に‘ITEM’指示子を持つ列定義をはじめるべきでしょう。その他の指示子は許容値の名前のリストを持つ列‘Owner’、4つの異なる利用可能な値を持つ‘Status’、チェックボックスフィールドを持つ‘Approved’を生成します。‘%’文字の後に幅が与えられていないとき、列は全ての値を完全に表示するために必要な幅と同じぐらい正確に広くなります。‘Approved’列は修正れたタイトル(クエスチョンマークのある‘Approved?’)を持っています。サマリは、HH:MMのように表現する持続時間を追加することで‘Time_Estimete’を、全ての子がチェックされているなら‘[X]’を提供することで‘Approved’を作ります。‘CLOCKSUM’は特別で、サブツリーにあるCLOCKインターバルの合計をリストします。


Next: , Previous: カラムの定義, Up: カラムビュー

7.5.2 カラムビューの利用

カラムビューのオン・オフ

C-c C-x C-c     (org-columns)
カラムビューを有効とします。カーソルがそのファイルの最初の見出しより前にあるならば、カラムビューは#+COLUMNS定義を使う事によりファイル全体に対して有効となります。カーソルがアウトラインの内側のどこかにあるならば、このコマンドはフォーマットを定義する:COLUMNS:プロパティをポイントから上部の階層に向かって検索します。1つ見つかったとき、カラムビューテーブルは:COLUMNS:プロパティを含むエントリではじまるツリー用に設立されます。そのようなプロパティが見付からないときは、フォーマットは#+COLUMNS行もしくは、変数org-columns-default-formatから取得され、カラムビューは現在のエントリとそのサブツリーのために設置されます。
r     (org-columns-redo)
バッファにある最近作られた変更を反映するためにカラムビューを再生成します。
g     (org-columns-redo)
rと同じです。
q     (org-columns-quit)
カラムビューを抜けます。
値を編集する
<left> <right> <up> <down>
フィールドからフィールドへカラムビューを通じて移動します。
S-<left>/<right>
フィールドの次と前の許可値を切り替えます。このために、プロパティの指定された許可値を持つ必要があります。
1..9,0
直接にN番目の許可値を選択します。0は10番目の値を選択します。
n     (org-columns-next-allowed-value)
p     (org-columns-previous-allowed-value)
S-<left>/<right>と同じです。
e     (org-columns-edit-value)
ポイント下のプロパティを編集します。特別なプロパティでは通常そのプロパティを変更するために使うのと同じインタフェースを呼び出します。例えば、TAGSプロパティを編集するとき、タグ補完や高速選択インタフェースがポップアップします。C-c
C-c
C-c     (org-columns-set-tags-or-toggle) チェックボックスがあるならば、それを切り替えます。
v     (org-columns-show-value)
このプロパティの完全な値を表示します。列の幅がその値よりも小さいときに便利です。
a     (org-columns-edit-allowed)
このプロパティの許可値のリストを編集します。リストが階層で見つかるならば、修正された値はそこに保存されます。リストが見つからないならば、新しい値は現在のカラムビューの一部である最初のエントリに保存されます。
テーブル構造を編集する

<     (org-columns-narrow)
>     (org-columns-widen)
1文字分列を狭く・広くする
S-M-<right>     (org-columns-new)
現在の列の左に新しい列を挿入する。
S-M-<left>     (org-columns-delete)
現在の列を削除する。


Previous: カラムビューの利用, Up: カラムビュー

7.5.3 カラム表示の保存

カラムビューはバッファへのオーバレイのみなので、直接にエクスポートや印字ができません。カラムビューをキャプチャしたいならば、columnviewダイナミックビュー(see ダイナミックブロック)を使って下さい。このブロックのフレームは以下のように見えます。

     * The column view
     #+BEGIN: columnview :hlines 1 :id "label"
     
     #+END:

ダイナミックブロックを更新するには以下のコマンドを使用します。

:id
これは最も重要なパラメーターです。カラムビューはある(サブ)ツリーによくローカライズされる機能であり、キャプチャブロックはファイル内の異なる位置にあるかもしれません。キャプチャするビューをもつツリーを識別するために、4つの値を使えます。
          local     キャプチャブロックに位置するツリーを使います。
          global    そのファイル内の全ての見出しを含む、
                    グローバルビューを作ります。
          "file:path-to-file"
                    このファイルの一番上のカラムビューを実行します。
          "ID"      labelである:ID:プロパティを
                    持つツリーにあるカラムビューを呼び出します。現在の
                    エントリ用にグローバルにユニーグなIDを作り、
                    kill-ringにそれをコピーするために
                    M-x org-id-copyを使えます。

:hlines
tのとき、全ての行の後に横線を挿入します。数値Nのとき、レベル<= Nを持つ各見出しの前に縦線を挿入します。
:vlines
tに設定するとき、列グループに縦線を強制します。
:maxlevel
数値を設定すると、そのレベル以下のエントリをキャプチャしません。
:skip-empty-rows
tに設定すると、カラムビューの空でない指定子がITEMのみである行をスキップします。

次のコマンドはダイナミックブロックを挿入、更新します。

i
C-c C-x
i     (org-insert-columns-dblock) カラムビューをキャプチャするダイナミックブロックを挿入します。そのビューのスコープやIDの入力を促されます。C-c C-u
C-c
C-c or C-c C-x C-u     (org-dblock-update) ポイント下のダイナミックブロックを更新します。カーソルはダイナミックブロクの#+BEGIN行にある必要があります。C-c C-x C-u
C-u
C-c C-x C-u     (org-update-all-dblocks) 全てのダイナミックブロックを更新します(see ダイナミックブロック)。複数のクロックテーブルブロックや列キャプチャブロック、その他のダイナミックブロックがバッファにあるとき便利です。

カラムビューテーブルに計算式を追加し、テーブルの前にプロットする命令を追加できます。これらはブロックの更新があっても生き残ります。テーブルの後に#+TBLFM:があるならば、テーブルは実際に更新の後に自動的に実際に再計算されます。

テーブルの中でプロパティ値を処理したりキャプチャする別の方法はEric Schulteのorg-collector.elによりできます。それは寄付されたパッケージ56です。あるスコープにあるエントリからプロパティを集めるための一般的なAPIやテーブルやダイナミックブロックの中に挿入する前にそれらの値を処理する任意のLisp式を提供します。


Previous: カラムビュー, Up: プロパティとカラム

7.6 プロパティAPI

プロパティにアクセス、変更するための完全なAPIがあります。このAPIはプロパティと共に動作するために、また、それらを元とした機能を実装するためにEmacs Lispプログラムから使われます。詳細な情報はプロパティAPIを使うを参照して下さい。


Next: , Previous: プロパティとカラム, Up: Top

8 日付と時刻

プロジェクトのプランニングを補助するため、TODOアイテムは日付または時刻でラベリングすることができます。このような形でフォーマットされた日付および時刻の情報を含む文字列はOrg-modeではタイムスタンプと呼ばれています。一般的な用法では、タイムスタンプは何かを作成したときや最後に変更したときの記録を示しますので、若干紛らわしいかもしれませんが、Org-modeではタイムスタンプという用語をより広い意味で用います。


Next: , Previous: 日付や時間, Up: 日付や時間

8.1 タイムスタンプ、デッドラインおよびスケジューリング

タイムスタンプは、例えば‘<2003-09-16 Tue>’、‘<2003-09-16 Tue 09:39>’、‘<2003-09-16 Tue 12:00-12:30>’といった独自形式での日付(場合によっては時刻および時間間隔を含む)の指定方法です57。タイムスタンプはOrgツリー構造の見出し、本文のいずれにも挿入できます。タイムスタンプを指定することにより、指定された日付のアジェンダ(see 毎週/毎日のアジェンダ)にそのエントリーが表示されます。その際には以下の区別が行われます。

プレーンなタイムスタンプ、イベント、アポイント
項目に対して単一の日付または時刻を割り当てるシンプルなタイムスタンプです。紙の予定表に予定あるいはイベントを記入するのとほぼ同じ感覚です。タイムラインおよびアジェンダを表示すると、プレーンなタイムスタンプが指定されたエントリーの見出しはまさにその指定された日付に表示されます。
          * ピーターと映画を見に行く<2006-11-01 Wed 19:15>
          * 気候変動についてのディスカッション<2006-11-02 Thu 20:00-22:00>

リピート間隔を指定したタイムスタンプ
タイムスタンプにはリピート間隔を含めることができます。すなわち単一の日時だけでなく、N日(d)、N週間(w)、Nヶ月(m)あるいはN年(y)といった一定の間隔で繰り返すようなケースに対応しています。例えば、毎週水曜日のアジェンダに表示する場合は以下のようになります。
          * 学校までサムを迎えに行く<2007-05-16 Wed 12:30 +1w>

ダイアリー形式のS式項目
より複雑な日付の指定方法として、Org-modeではEmacsのcalendarまたはdiaryパッケージで実装されているS式のダイアリー項目を使用することができます。例えば以下のような形式です。
          * 毎月第2木曜日のオタクの集まり
            <%%(diary-float t 4 2)>

日付または時刻の間隔
2つのタイムスタンプを‘--’でつなげることにより、時間間隔を表現できます。時間間隔の指定されたヘッドラインは、間隔の始めと終わりの日、およびその間の現在表示されている日付の項目に表示されます。以下のような形です。
          ** アムステルダムでのミーティング
             <2004-08-23 Mon>--<2004-08-26 Thu>

アクティブでないタイムスタンプ
プレーンなタイムスタンプと同様ですが、<>ではなく[]で囲むことによりアクティブでないタイムスタンプとなります。このようなタイムスタンプが指定されたエントリーは、アジェンダに表示されません
          * ジリアンが5度目の遅刻 [2006-11-01 Wed]


Next: , Previous: タイムスタンプ, Up: 日付や時間

8.2 タイムスタンプの作成

Org-modeがタイムスタンプを認識するためには、特定のフォーマットを用いる必要があります。以下のコマンドのいずれを用いても正しいフォーマットでタイムスタンプを生成することができます。

.
C-c
.     (org-time-stamp) 日付を入力して、それに対応するタイムスタンプを挿入します。既にバッファ内に存在するタイムスタンプにカーソルが置かれている場合は、このコマンドは新たなタイムスタンプを挿入する代わりに、既にあるタイムスタンプを変更します。このコマンドを2回連続で使用すると、時間間隔を指定することができます。!
C-c
!     (org-time-stamp-inactive) コマンドC-c .と同様ですが、アクティブでない(アジェンダのエントリーに反映されない)タイムスタンプを生成します。
C-u C-c .
C-u C-c !
C-c .およびC-c !と同様ですが、日付と時刻を含む代替フォーマットを使用します。標準では、時刻は5分間隔で丸められます。org-time-stamp-rounding-minutesのオプションを参照して下さい。<
C-c
<     (org-date-from-calendar) カレンダーのカーソルに対応したタイムスタンプを挿入します。>
C-c
>     (org-goto-calendar) 現在時刻のEmacsカレンダーにアクセスします。現在の行に既にタイムスタンプが存在する場合は、それに対応する日付にアクセスします。C-o
C-c
C-o     (org-open-at-point) タイムスタンプおよび時間間隔で指定された日付でアジェンダにアクセスします(see 毎週/毎日のアジェンダ)。
S-<left>     (org-timestamp-down-day)
S-<right>     (org-timestamp-up-day)
カーソル一の日付を1日変更します。このキーバインドはシフト選択およびそれに関連するモードと衝突します(see 衝突)。
S-<up>     (org-timestamp-up)
S-<down>     (org-timestamp-down-down)
カーソルのあるタイムスタンプの項目を変更します。カーソルが年、月、日、時間あるいは分の上に置かれている場合に使用できます。例えば、タイムスタンプが‘15:30-16:30’のように時間間隔を含む場合、左の時刻を変更すると自動的に右の時刻も変更され、間隔は一定の長さに保たれます。間隔の長さを変更するには、右の時刻を変更して下さい。ただし、カーソルがタイムスタンプではなく見出し上にある時には、同じキー操作により項目の優先度が変更されますので気をつけて下さい(see プロパティ)。このキーバインドはシフト選択および関連するモードとも衝突します(see 衝突)。C-y
C-c
C-y     (org-evaluate-time-range)

開始日時と終了日時の差を計算することにより、時間間隔を計算します。前置引数を指定することにより、計算結果をタイムスタンプの後に挿入できます(テーブルの中では隣の列に挿入されます)。


Next: , Previous: タイムスタンプの作成, Up: タイムスタンプの作成

8.2.1 日付/時間プロンプト

Org-modeが日付または時刻をプロンプトに表示するとき、標準では標準フォーマットによる形式が表示されるため、そのフォーマットで入力することが必須だと勘違いしそうになります。ところが、実際には日付または時刻の情報を含む任意の文字列を入力することができ、Org-modeはかなり利口に入力された時間情報を解釈します。例えば、C-yにより電子メールの文面からコピーした文字列(複数行でも可)を挿入することができます。Org-modeは文面の中の時間情報を見つけ出し、そこで指定されていない情報はデフォルトの日付時刻を用います。デフォルトは通常は現在の日付および時刻ですが、既にあるタイムスタンプを変更する場合や、時間間隔の2つ目の項目を入力する場合には、バッファ内のタイムスタンプから情報が取得されます。情報を解釈する際に、Org-modeは多くの場合では入力したい時間が未来の時間であると推測します。例えば年月の情報を省略して、今日より前の時刻を指定しようとすると、Org-modeは未来の時刻を意図しているものと推測します58。日付が自動的に未来にシフトされた場合、プロンプトには‘(=>F)’が表示されます。

例えば、今日が2006年6月13日であるとしたとき、以下の左ような入力は右のように解釈されます。Org-modeにより推定された部分を太字で示します。

     3-2-5         ⇒ 2003-02-05
     2/5/3         ⇒ 2003-02-05
     14            ⇒ 2006-06-14
     12            ⇒ 2006-07-12
     2/5           ⇒ 2007-02-05
     Fri           ⇒ 直近の金曜日(基準日かそれより後)
     sep 15        ⇒ 2006-09-15
     feb 15        ⇒ 2007-02-15
     sep 12 9      ⇒ 2009-09-12
     12:45         ⇒ 2006-06-13 12:45
     22 sept 0:34  ⇒ 2006-09-22 0:34
     w4            ⇒ 現在の年(2006年)のISO週番号
     2012 w4 fri   ⇒ 2012年のISO4週目の火曜日の日付
     2012-w04-5    ⇒ 上と同様

さらに、相対的な日付を入力するための方法として、入力の最初にプラスまたはマイナス記号、数値および文字([dwmy])により日、週、月あるいは年の変化を指定する方法があります。単一のプラス/マイナスを入力すると、常に今日に対する相対的な日付が指定されます。2つのプラスまたはマイナスが入力されると、標準の日付に対する相対値となります。一文字の代わりに時間に関する省略文字列を指定すると、N番目の該当する日が指定されます。以下に例を示します。

     +0            ⇒ 今日
     .             ⇒ 今日
     +4d           ⇒ 今日から4日後
     +4            ⇒ 上と同様
     +2w           ⇒ 今日から2週間後
     ++5           ⇒ 標準日時から5日後
     +2tue         ⇒ 今日から数えて2回目の火曜日

この機能では、英語の月および曜日の省略記法に対応しています。省略しない記法や他の言語の記法を使用したい場合には、変数parse-time-monthsおよびparse-time-weekdaysを変更して下さい。

時間間隔は、開始時刻と終了時刻を入力するか、開始時刻とその継続時間(HH:MMの形式)を入力することにより指定できます。前者の場合は分離記号として`-'あるいは`-{}-'を使用し、後者の場合は分離記号として'+'を使用して下さい。例えば以下の通りです。

     11am-1:15pm    ⇒ 11:00-13:15
     11am--1:15pm   ⇒ 上と同様
     11am+2:15      ⇒ 上と同様

ミニバッファのプロンプトと並行して、カレンダーがポップアップします59。カレンダー内の日付をクリックするか、<RET>を入力することにより日付のプロンプトを抜けると、カレンダーで選択した日付とプロンプトで入力された情報が組み合わされます。カレンダーはミニバッファから自由に操作することがきます。

     <RET>           カレンダーのカーソル地点の日付を選択する。
     mouse-1        クリックにより日付を選択する。
     S-<right>/<left>     1日分進める/戻る
     S-<down>/<up>     1週間分進める/戻る
     M-S-<right>/<left>   1ヶ月分進める/戻る
     > / <          カレンダーを1ヶ月前/後ろにスクロールする
     M-v / C-v      カレンダーを3ヶ月前/後ろにスクロールする

文章の説明では、日付時刻プロンプトの動作は複雑に思えるかもしれませんが、徐々に慣れてくると、これ以外の方法で日付および時刻を入力することのほうが面倒に感じることでしょう。動作の仕組みに対する理解を助けるため、入力された情報に対するその時点での解釈がミニバッファに表示されます。60


Previous: 日付/時間プロンプト, Up: タイムスタンプの作成

8.2.2 カスタムタイムフォーマット

日付や時間を表現するため、Org-modeはISO8601で定義されているような標準的なISOの記法を使用しています。もしこの記法に不慣れで、別の日付や時間の記法のほうが好みである場合は、変数org-display-custom-timesおよびorg-time-stamp-custom-formatsをカスタマイズすることができます。

C-t
C-c C-x
C-t     (org-toggle-time-stamp-overlays) カスタムフォーマットの日付および時間の表示をトグルします。

Org-modeは文字列のスキャンニングのためにデフォルトのフォーマットを必要とするため、カスタムフォーマットの日付および時刻は標準フォーマットを置き換えません。その代わりに、テキストのプロパティを用いて標準フォーマットに上書きされます。これが原因で以下のような動作が生じます。


Next: , Previous: タイムスタンプの作成, Up: 日付や時間

8.3 デッドラインとスケジュール

プランニングを補助するため、タイムスタンプの前に所定のキーワードを置くことができます。

DEADLINE
意味:タスク(多くの場合はTODOアイテムですが、それに限りません)はタイムスタンプで示された日のうちに終了するものと見なされます。

デッドラインが付けられた場合は、そのタスクはアジェンダの中に記載されます。それに加えて、今日のアジェンダはデッドラインが近づいたり、それを超過したりした場合に警告を発します。警告は期限のorg-deadline-warning-daysだけ前から表示され、エントリがDONEとされるまでは消えません。以下に例を示します。

          *** TODO ガイド誌の地球についての記事を書く。
              担当編集者は[[bbdb:Ford Prefect]]
              DEADLINE: <2004-02-29 Sun>

以下の構文を用いることにより、個別のデッドラインについて異なる警告のリードタイムを指定することができます。以下は5日間の警告期間を指定する場合の例ですDEADLINE: <2004-02-29 Sun -5d>

SCHEDULED
意味:指定された日に、そのタスクに取りかかる予定であることを示します。

見出しは指定された日付の下に記載されます61。それに加えて、スケジューリングされた日付を超過した場合には今日のリストにエントリがDONEとなるまでリマインダが表示され続けます。すなわち、タスクは完了するまで自動的に後回しにされます。

          *** TODO トリリアンに大晦日のデートについて電話する。
              SCHEDULED: <2004-12-25 Sat>

重要:Org-modeで項目をスケジューリングすることは、ミーティングをスケジューリングすることと同様であるという理解は正しくありません。ミーティングをセットするのは単なるアポイントですが、このような場合はエントリーにはプレーンなタイムスタンプを使用し、日付が来れば項目が表示されるように設定するべきです。これはユーザーがしばしば誤解する点です。Org-modeではスケジューリングは何らかのアクションアイテムに取りかかる際に、日付を設定することを意味します。

スケジューリングやデッドラインの項目には、繰り返しを含むタイムスタンプを使用することが可能です。Org-modeは、タイムスタンプが繰り返し日付の直近の日付を表すものと推測して事前あるいは事後の警告を発します。しかし、スケジューリングやデッドラインにおいては<%%(diary-float t 42)>のような日記のS式項目は限定的にしか使用できません。Org-modeはこれらS式項目の内部構造について十分理解していないため、事前および事後の警告を発することはできません。ただし、S式項目と一致したそれぞれの日付に項目を表示することは行われます。


Next: , Previous: デッドラインとスケジュール, Up: デッドラインとスケジュール

8.3.1 デッドラインおよびスケジュールの挿入

以下のコマンドにより、項目にデッドラインまたはスケジュールを瞬時に挿入62することができます。

C-d
C-c
C-d     (org-deadline) タイムスタンプと‘DEADLINE’キーワードを挿入します。挿入は見出しの直下の行に対して行われます。前置引数を伴って呼ばれた場合は、エントリーから既に存在するデッドラインが消去されます。変数org-log-redeadline63に対応して、既に存在するデッドラインを変更する際にノートをとることができます。C-s
C-c
C-s     (org-schedule) タイムスタンプと‘SCHEDULED’キーワードを挿入します。挿入は見出しの直下の行に対して行われます。CLOSEDのタイムスタンプは全て消去されます。前置引数を伴って呼ばれた場合は、エントリーからスケジューリングの日付が消去されます。変数org-log-reschedule64に対応して、既に存在するスケジューリングを変更する際にノートをとることができます。C-x C-k
C-c
C-x C-k     (org-mark-entry-for-agenda-action)

現在の項目をアジェンダのアクションのためにマークします。このように項目をマークした後で、アジェンダまたはカレンダーを開いて適切な日を探すことができます。選択した日付の上にカーソルを置いてk sあるいはk dを入力することにより、マークされた項目にスケジュールを設定できます。d

C-c /
d     (org-check-deadlines)

全てのデッドラインのうち、既に過ぎているものとorg-deadline-warning-days以内に期限となるものを抽出したツリーを作成します。前置引数C-uにより、ファイル内の全てのデッドラインを表示します。前置引数で数値を指定すると、指定した分だけ先のデッドラインを表示します。例えば、C-1 C-c / dとすると明日期限となる全てのデッドラインを表示します。b

C-c /
b     (org-check-before-date) 指定された日より前のデッドラインを抽出したツリーを作成します。a
C-c /
a     (org-check-after-date) 指定された日より後のデッドラインを抽出したツリーを作成します。


Previous: デッドライン/スケジュールを挿入, Up: デッドラインとスケジュール

8.3.2 繰り返されるタスク

タスクの中には、何度も繰り返し行うものがあります。Org-modeでは、そのようなタスクの管理を助けるため、通常あるいはDEADLINE、SCHEDULEDのタイムスタンプに対してリピーターと呼ばれる機能を提供しています。以下の例を参照して下さい。

     ** TODO 家賃の支払い
        DEADLINE: <2005-10-01 Sat +1m>

この中で+1mがリピーターと呼ばれるもので、そのタスクが<2005-10-01>のデッドラインを持つと同時に、その日から一週間ごとに繰り返すことを意味します。デッドラインエントリーに対してリピーターと警告期間の両方を指定する必要がある場合には、DEADLINE: <2005-10-01 Sat +1m -3d>のようにリピーターを先に書き、警告期間を後に書きます。

デッドラインおよびスケジューリングされた項目は期限を過ぎた場合にはアジェンダ上にエントリーが作成されるため、項目が終了した場合にはそのようなエントリは実施済みとマークできることが必要です。DEADLINEあるいはSCHEDULEDのTODOエントリーをDONEとマークした時には、アジェンダ上でのエントリーは作成されなくなります。一方で、問題となるのは繰り返し項目の次の日時も同時にアクティブでなくなってしまうことです。Org-modeでは、このような状況に対して以下のように対処します。繰り返しのエントリーをDONEに変更しようとした場合(C-c C-tなどにより)、繰り返しタイムスタンプの基準時刻が一つ分シフトされ、すぐにエントリーの状態がTODOに戻されます65。上の例では、DONEの状態にすることにより日付が以下のように変更されます。

     ** TODO 家賃の支払い
        DEADLINE: <2005-11-01 Tue +1m>

デッドラインの下にタイムスタンプが追加され66、これにより前の時刻のデッドラインについて実際に行動したことが記録されます。

日付がシフトされた結果として、このエントリーはアジェンダ上の過去の日付からは見えなくなりますが、将来の日付はアジェンダ上で確認することができます。

+1m’の繰り返し指定により、日付は常に1ヶ月きっちりシフトされます。そのため、例えば家賃を3ヶ月支払っていない場合には、一度このエントリーをDONEにしたとしても、相変わらず期限を過ぎたデッドラインと判断されます。タスクの性質によって、この方法が常に適切な処理方法とは限りません。例えば、父親と連絡をとるのを3週間忘れてしまった場合、それを埋め合わせるために一日に3回電話をすることはないでしょう。さらに、バッテリーの充電のように、最後に行ってから一定時間経過後に常に繰り返す必要がある場合もあります。このようなタスクについてはOrg-modeは専用の反復演算子++および.+を用意しています。例えば以下の通りです。

     ** TODO 父に電話
        DEADLINE: <2008-02-10 Sun ++1w>
        この項目をDONEとすると、日付が一週間シフトされ、同時にタスクが
        行われるまでは将来の全ての日曜日に対して項目がシフトされます。
        土曜日に電話をしたとしても、次の日曜日にシフトされます。
     ** TODO 火災報知器の電池をチェックする
        DEADLINE: <2005-11-01 Tue .+1m>
        この項目をDONEとすると、確認した日のちょうど1ヶ月後にシフトされます。

同じタスクに対して、スケジューリングとデッドラインの情報を両方付けることができます。この場合には、両方の繰り返し間隔は同じになりますので、注意して下さい。

繰り返し演算子を使わない代替的な方法の一つとして、タスクサブツリーのコピーをいくつか作成し、それぞれのコピーに対してシフトされた時刻を指定する方法があります。そのためにC-c C-x cコマンドがあります。この機能は見出し位置と階層の変更で解説されています。


Next: , Previous: デッドラインとスケジュール, Up: 日付や時間

8.4 作業に費やした時間の計測

Org-modeでは、プロジェクトの中で特定のタスクを実行するのにかかった時間を計測することができます。ある項目について取りかかる時に、計測を開始します。そのタスクを中断するときやタスクが終了した時に計測が終了し、対応する時間間隔が記録されます。同時に、あるプロジェクトの全てのサブツリーでかかった時間の合計が計算されます。さらに、最近に時間が計測されたタスクが記憶されているため、その時点で取りかかっている複数のタスク間を素早く移動することができます。

Emacsセッションでの経過時間の履歴を保存するためには、以下のコマンドを使います。

     (setq org-clock-persist 'history)
     (org-clock-persistence-insinuate)

Emacsの再開後に新しいタスクの計測を始めると、不完全な時計67が表示され(see 空き時間の解決)、それについて何をするかを入力するように促されます。


Next: , Previous: 作業に費やした時間の計測, Up: 作業に費やした時間の計測

8.4.1 計測コマンド

C-c C-x C-i     (org-clock-in)
現在の項目に対して、時間の計測を開始します(クロックイン)。これによりCLOCKキーワードとともにタイムスタンプが挿入されます。最初の計測でない場合には、複数のCLOCK行が表示され、:LOGBOOK:という引き出しに格納されます(変数org-clock-into-drawerについても参照のこと)。前置引数C-uと共に呼ばれた場合は、最近時間が計測されたタスクのリストからタスクを選択します。2個の前置引数C-u C-uが入力された場合は、現在位置のタスクの計測を開始し、そのタスクをデフォルトに指定します。デフォルトのタスクは、時間計測の選択をする場合に常にリストの中に表示され、文字dが付けられます。
時間を計測している間は、現在の計測時間とタスクの名前がモード行に表示されます。表示される計測時間はこのタスクとその子タスクについての全ての時間です。タスクが工数の見積もり(see 工数の見積もり)を含む場合には、モード行は見積もりに対する現在の経過時間を表示します68。タスクが繰り返しを含む場合には、そのタスクの最近のリセットからの経過時間69のみが計測されます。表示される時間について変更したい場合には、プロパティCLOCK_MODELINE_TOTALを変更します。この中には現在計測中の時刻のみ表示するcurrent、今日計測された全ての時間を表示するtoday(変数org-extend-today-untilについても参照)、全ての時間を表示するall、デフォルトの設定であるautoなどがあります70
モード行をmouse-1でクリックすることにより、メニューと時間計測のオプションがポップアップします。C-x C-o
C-c
C-x C-o     (org-clock-out)

時間の計測を終了します(クロックアウト)。これにより、時間計測が開始されたのと同じ場所にもう一つのタイムスタンプが挿入されます。同時に、計測された時間間隔が開始時刻と終了時刻の後に‘=> HH:MM’の形式で挿入されます。クロックアウトのタイムスタンプ作成時にノートを追加するには、変数org-log-note-clock-outを参照して下さい71C-e

C-c C-x
C-e     (org-clock-modify-effort-estimate) 現在時間を計測しているタスクについて、工数見積もりをアップデートします。 C-y
C-c C-c or C-c
C-y     (org-evaluate-time-range) タイムスタンプの一つを変更した後で、時間間隔を更新します。これはタイムスタンプを手動で変更した場合にのみ必要です。S-<cursor>キーにより変更した場合には、自動的に再計算されます。C-t
C-c
C-t     (org-todo) TODOの項目をDONEに変更することにより、その項目で時間が計測されている場合には自動的に停止します。C-x C-x
C-c
C-x C-x     (org-clock-cancel) 現在の時間計測をキャンセルします。これは間違って時間を計り始めてしまった場合や、結果的に意図したタスク以外を行ってしまった場合に便利です。C-x C-j
C-c
C-x C-j     (org-clock-goto) 現在クロックイン中のタスクの見出しにジャンプします。前置引数C-uにより、最近時間が計測されたタスクから目的のタスクを選択します。C-x C-d
C-c
C-x C-d     (org-clock-display)

現在のバッファの各サブツリーからの時間のサマリーを作成します。これによりそれぞれの見出しの後ろに時間が上書きされ、その見出しの中で下位の見出しも含めて記録された時間の合計が表示されます。表示の切り替えにより、ツリーの各項目を確認できますが、バッファを変更した場合やC-c C-cを入力した場合は時間の上書きは消えてしまいます(変数org-remove-highlights-with-change)を参照)。

タイムライン(see タイムライン)およびアジェンダ(see 毎週/毎日のアジェンダ)の中でキーlを入力することにより、その日のうちに完了したタスクがどれかを表示することができます。


Next: , Previous: 計測コマンド, Up: 作業に費やした時間の計測

8.4.2 クロックテーブル

Org-modeは、時間計測の情報をもとにかなり詳細なレポートを作成することができます。このようなレポートはクロックテーブルと呼ばれており、その名の通りOrg-modeのテーブルまたはその組み合わせにより作成されます。

C-r
C-c C-x
C-r     (org-clock-report) 現在のファイルにOrg-modeテーブル形式の計測時間レポートを含む動的ブロック(see ダイナミックブロック)を挿入します。前置引数とともに呼ばれた場合は、現在の文書の最初のクロックテーブルに移動し、それを更新します。C-c C-u
C-c
C-c or C-c C-x C-u     (org-dblock-update) 現在位置の動的ブロックを更新します。カーソル位置は動的ブロックの#+BEGIN行の中に位置している必要があります。C-c C-x C-u
C-u
C-c C-x C-u全ての動的ブロックを更新します(see ダイナミックブロック)。この機能はバッファ内で複数のクロックテーブルが存在する場合に有用です。
S-<left>
S-<right>     (org-clocktable-try-shift)
現在の:blockの時間間隔を変更し、テーブルを更新します。このコマンドを使用するには、カーソルが#+BEGIN: clocktable行にある必要があります。例えば:blocktodayの場合、このコマンドによりtoday-1にシフトされます。

以下に、C-c C-x C-rコマンドによりバッファに挿入されるクロックテーブルのフレームの例を示します。

     #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
     #+END: clocktable

BEGIN’行には、レポートの対象範囲、構造およびフォーマットを定めるオプションを指定します。これらのデフォルト値は変数org-clocktable-defaultsにより変更することができます。

まず、時間が計測されたエントリのうちどれが選択されるかを定めるオプションがあります。

     :maxlevel    テーブルに表示される最大の深さレベル。
                  これより深いレベルの時間は上位レベルに積算されて表示される。
     :scope       対象とするスコープ。以下のうちいずれかを指定する。
                  nil        現在のバッファ、或いはナローされた領域
                  file       現在のバッファ全体
                  subtree    クロックテーブルのあるサブツリー内
                  treeN      周囲のレベルNのツリー、例えばtree3
                  tree       周囲のレベル1のツリー
                  agenda     アジェンダファイル群の全体
                  ("file"..) 指定されたファイルをスキャンする
                  file-with-archives    現在のファイルとそのアーカイブ
                  agenda-with-archives  アーカイブを含む全てのアジェンダファイル
     :block       対象とする時間範囲、この範囲は絶対時間または現在からの相対時間
                  で表記され、以下のいずれかのフォーマットに従う。
                  2007-12-31    2007年の大晦日
                  2007-12       2007年12月
                  2007-W50      2007年のISO週で50週目
                  2007-Q2       2007年の第二四半期
                  2007          2007年
                  today, yesterday, today-N          相対的な日指定
                  thisweek, lastweek, thisweek-N     相対的な週指定
                  thismonth, lastmonth, thismonth-N  相対的な月指定
                  thisyear, lastyear, thisyear-N     相対的な年指定
                  S-<left>/<right>キーにより間隔をシフトすることができる。
     :tstart      対象となる時間の始まりを示す文字列
     :tend        対象となる時間の終わりを示す文字列
     :step        テーブルをまとめる間隔。weekまたはdayを指定。
                  この機能を使うには、:block:tstart:tendのいずれかを指定する必要がある。
     :stepskip0   時間間隔がゼロの項目を表示しない。
     :fileskip0   時間間隔がゼロのファイルについて、テーブルに表示しない。
     :tags        特定のタグがついたエントリのみ収集の対象とする。

さらに、テーブルのフォーマットを指定するためのオプションがあります。これらのオプションは関数org-clocktable-write-defaultにより解釈されますが、パラメーター:formatterにより解釈のためのユーザー独自の関数を指定することができます。

     :emphasize   値がtの場合、レベル1およびレベル2の項目を強調表示します。
     :lang        項目名のセル(例えば"Task")で用いる言語72
     :link        テーブルの見出しの項目と元のファイルでの位置をリンクする。
     :narrow      Org-modeのテーブルの見出し列の幅の上限を決める整数。
                  50!’のように指定すると、エクスポート時にも見出しが短縮表示される。
     :indent      各見出しフィールドをそのレベルに合わせてインデントする。
     :tcolumns    時間を表示するために使われる列の数。この値が:maxlevelより小さい場合、
                  それより下位のレベルは一つの列に合わせて表示される。
     :level       レベル番号を示す列を含めるかどうか指定する。
     :compact     コンパクトに表示する。:level nil :indent t :narrow 40! :tcolumns 1
                  の短縮表現で、明示的に:narrowで指定されなければ、全ての変数は上書きされる。
     :timestamp   エントリのタイムスタンプが存在する場合には、それを表示する。SCHEDULED、
                  DEADLINE、TIMESTAMP、TIMESTAMP_IAの順に探索される。
     :formula     追加的な#+TBLFMの内容。通常の形式に追加されて評価される。
                  特殊なケースとして、‘:formula %’を追加すると経過時間の割合行が追加される。
                  ここで形式をしていしない場合は、クロックテーブルの下に存在する形式が
                  アップデートされずに評価される。
     :formatter   時刻データをフォーマットし、バッファに表示するための関数。

現在のレベル1のツリーについて、当日分の時間サマリーを得る場合は以下のように指定します。

     #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
     #+END: clocktable

明示的に時間間隔を指定する場合には、以下のように記述します73

     #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
                         :tend "<2006-08-10 Thu 12:00>"
     #+END: clocktable

現在のサブツリーでの経過時間のまとめを%表示するには、以下のように記述します。

     #+BEGIN: clocktable :scope subtree :link t :formula %
     #+END: clocktable

ここ1週間で計測された時間をコンパクトな幅で表示するには、以下のようにします。

     #+BEGIN: clocktable :scope agenda :block lastweek :compact t
     #+END: clocktable


Previous: クロックテーブル, Up: 作業に費やした時間の計測

8.4.3 空き時間の解決

ある項目について作業を開始したあとで、例えば電話を取る場合などで一時的にコンピュータの前を離れると、その時間について現在の経過時間から差し引いたり、他の項目に加えたりして「解決」する必要が生じます。

変数org-clock-idle-timeを適当な整数値(例えば10や15)に設定することにより、設定時間を超える休止のあとで戻ってきた場合にEmacsはアラートを出し、その休止時間をどのように処理するか尋ねます74。休止から戻った時点で幾つか質問が表示され、実際にどの程度休止時間があったか(その時点までの計測時間が随時表示されます)を入力すると同時に、休止の扱いについて以下のような選択が可能です。

k
休止時間として計測された時間の一部または全てをタスクの計測時間として保持する場合には、kを押します。Org-modeは何分間保持するか尋ねます。<RET>キーを押すことにより全ての時間が保持され、タスクの計測時間は変更されません。数値を指定すると、指定した分数だけ時間が保持されます。
K
シフトキーと共にKを押した場合、入力された分数だけ時間を保持すると同時にただちに現在のタスクの計測を中止します。全ての休止時間を保持する場合、これは単にタスクの計測を中止したのと同じことになります。
s
休止時間を保持しない場合には、sを押すことにより計測時間から全ての休止時間が差し引かれ、戻ってきた時点から再開されます。
S
休止時間を保持せず、休止開始時の時刻で時間の計測を止める場合には、シフトキーと共にSを押して下さい。シフトキーを使うと、いずれのオプションでも時間の計測が中止されるということを覚えておいて下さい。
C
時間計測そのものをキャンセルする場合は、Cを押して下さい。キャンセルしない場合でも、時間が引かれた結果の残り時間が1分未満である場合には、中身の無いエントリでログが見づらくなるのを防ぐため、時間計測はやはりキャンセルされますので注意して下さい。

空き時間について、現在の計測時間から差し引いたあとで別の計測項目に追加したい場合にはどうすれば良いでしょうか。その場合は、差し引いたあとに単純に次のタスクの計測を開始して下さい。Org-modeは差し引かれた時間があることを記憶していて、次の時間計測を始める際にその時間を足し込むかを尋ねます。

次のようなケースでも、時間解決機能が魔法のような働きをします。あなたがタスクの時間計測をしながらご機嫌に作業をすすめていると、突然飼い猫がネズミを追いかけて、それを見たハムスターが驚いてUPSの電源装置に衝突してしまったとしましょう!あなたは全てのバッファを失うことになりますが、オートセーブ機能のおかげでOrg-modeで行った最近の変更は保持され、途中であった時間計測の時間も保持されています。

Emacsを再開してタスクの計測を開始すると、Org-modeは最後のセッションで計測が終了されていない半端の時間計測があることに気がつきます。そのようなタスクについては、計測の開始時刻を不明な時刻の始点として、その間の時間をどのように解決するかについて尋ねます。その際の考え方や挙動は空き時間の処理方法と全く同じで、単に空き時間ではなくリカバリの際に発生しているだけなのです。

Org-modeのアジェンダが半端時間を絶えずチェックしているファイルのリストは、M-x org-resolve-clocksにより確認することができます。


Next: , Previous: 作業に費やした時間の計測, Up: 日付や時間

8.5 工数の見積もり

詳細な作業計画を立てて仕事を行いたい場合や、仕事の工数の見積もりを作成する必要がある場合には、エントリに工数見積もりを割り当てたいと思うかもしれません。また、同時に時間の計測を行う場合には、あとで見積もった時間数と実際にかかった時間を比較したいと思うかもしれません。それは見積もりの精度を上げる良い方法でもあります。工数の見積もりは専用のプロパティである‘Effort’に保存されます75。エントリに工数を追加するには、以下のようなコマンドを用います。

e
C-c C-x
e     (org-set-effort) 現在のエントリについて工数の見積もりを行います。前置引数に数値を指定することにより、N番目の数値に指定します(下記の例を参照)。このコマンドはアジェンダからもeキーを押すことによりアクセスできます。C-x C-e
C-c
C-x C-e     (org-clock-modify-effort-estimate) 現在時間が計測されている項目の工数見積もりを変更します。

明らかなように、工数見積もりを行う最善の方法はカラムビュー(see カラムビュー)を用いることです。個別の項目についての工数見積もりから始めて、COLUMNSフォーマットによりこれらの値と実際の計測時間(時間の計測を行いたい場合)を同時に表示します。例えば、あるバッファについて以下のように指定できます。

     #+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00 8:00
     #+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort){:} %CLOCKSUM

さらに良い方法としては、変数org-global-propertiesあるいはorg-columns-default-formatをカスタマイズすることにより、これらの数値をグローバルに指定できます。特にこの指定をアジェンダで使用したい場合には、グローバルな指定を行うことが推奨されます。

個別の項目について見積もりを割り当てるには、カラムモードに移行し、S-<right>およびS-<left>を使うことにより値を変更します。入力された数値はすぐに階層構造で足し合わされます。その隣の列には計測された時間が表示されることになります。

日別あるいは週別のアジェンダでカラムビューに移行すると、工数の列は各日についての工数見積もりを足し合わせて表示され76、これを用いてスケジュールの空きを見つけることができます。その日の作業について全体像をつかみたい場合には、オプションorg-agenda-columns-add-appointments-to-effort-sumを指定することができます。時間間隔が指定されているアポイントで、その日に発生するものについても負荷見積もりに加算して表示されます。

工数見積もりは、アジェンダ内で/を押すことによりアジェンダの2次的なフィルタリングに用いることができます(see アジェンダのコマンド)。このような見積もりを確実に行えば、2、3回キーを押すことにより空いている時間間隔に合うように項目を絞り込むことができます。


Next: , Previous: 工数の見積もり, Up: 日付や時間

8.6 相対時間タイマーを使ったノート作成

例えば会議やビデオ閲覧時にノートをとる際など、開始時からの経過時間がわかると便利な場合があります。Org-modeはそのような場合に使える相対時間タイマー機能を持っており、時間を含むノートを簡単に作ることができます。

.
C-c C-x
.     (org-timer) バッファに相対時間タイマーを挿入します。最初に使う際にはタイマーが開始されます。前置引数と共に呼ばれた場合には、タイマーがリスタートされます。C-x -
C-c
C-x -     (org-timer-item) 現在の相対時刻での記述項目を挿入します。前置引数と共に呼ばれた場合は、タイマーの時刻が0にリセットされます。
M-<RET>     (org-insert-heading)
タイマーリストが既に開始されている場合はM-<RET>で新しいタイマー項目を追加することもできます。
C-c C-x ,
タイマーを一時停止します。一時停止されている場合には再開します (org-timer-pause-or-continue)。
C-u C-c C-x ,
タイマーを停止します。これを実行した後には古いタイマーを再開することはできず、新しいタイマーの作成のみが可能です。このコマンドによりモード行からもタイマーが削除されます。C-x 0
C-c
C-x 0     (org-timer-start) バッファに何も挿入せずにタイマーをリセットします。デフォルトではタイマーは0にリセットされますが、前置引数C-uと共に呼ばれた場合は、指定された時間からタイマーが始められます。ユーザーは開始時間を入力するよう促されます。同じ位置に既にタイマー文字列がある場合には、その時間がデフォルトとして指定されます。そのため、このコマンドは休憩時間のあとなどでノート取りを再開する場合などに用いることができます。2つの前置引数C-u C-uと共に呼ばれた場合は、アクティブなリージョンにある全てのタイマー文字列を一定の時間だけ変化させます。これはタイマーを正しい時刻に開始できなかった場合、タイマー文字列を一度に修正する場合に使用できます。


Previous: 相対時間タイマー, Up: 日付や時間

8.7 カウントダウンタイマー

Org-modeバッファからorg-timer-set-timerを呼ぶことにより、カウントダウンタイマーが利用できます。アジェンダバッファの場合は<;>、その他は<C-c C-x ;>により実行できます。

org-timer-set-timerにより、ユーザーに時間間隔を入力するように促し、モード行にカウントダウンタイマーを表示します。org-timer-default-timerによりデフォルトのカウントダウン値を設定します。前置引数で数値を指定することで、デフォルトの値が上書きされます。


Next: , Previous: 日付や時間, Up: Top

9 キャプチャ/再配置/アーカイブ

管理システムにおける重要な点の一つとして、新しいアイディアやタスクを素早くキャプチャし、それらを参考資料と連携する能力があることです。Org-modeではキャプチャと呼ばれるプロセスを用いて行います。また、タスクに関係するファイル(attachments)を特別なディレクトリに保存することがも可能です。一度システムへ取り込むと、タスクとプロジェクトを移動させる必要があります。完了したプロジェクトツリーをアーカイブファイルへ移動することで,システムをコンパクトで速く保つことが可能です。


Next: , Previous: キャプチャ/再配置/アーカイブ, Up: キャプチャ/再配置/アーカイブ

9.1 キャプチャ

Org-modeでは,新しいアイテムをキャプチャする方法はJohn Wiegleyによる素晴らしいrememberパッケージから多くのアイディアを得ています。バージョン6.36のOrg-modeまではremember.el用の特別な設定を使っていました。org-remember.elは従来の設定との逆互換性のため、まだOrg-modeの一部です。org-rememberに関するドキュメントはhttp://orgmode.org/org-remember.pdfにあります。

ここで述べる新しいキャプチャのための設定が好ましく、新しいユーザーはこれを使用するべきです。あなたのorg-remember-templatesを変換する場合は以下のコマンドを実行します。

     M-x org-capture-import-remember-templates <RET>

そして新しい変数をM-x customize-variable org-capture-templatesでカスタマイズし、結果を確認してから保存してください。これにより,新しい仕組みになれるまではリメンバーとキャプチャの両方を使うことができます。

キャプチャはワークフローにおいて小さい割り込みで素早くノートを保存することができます。キャプチャの基本的なプロセスはリメンバーととても良く似ていますが,Org-modeはそれをテンプレートなどで強化しました。


Next: , Previous: キャプチャ, Up: キャプチャ

9.1.1 キャプチャの設定

以下のカスタマイズはノートを取るデフォルトのファイルと新しい素材をキャプチャするためのグローバルなキー77

     (setq org-default-notes-file (concat org-directory "/notes.org"))
     (define-key global-map "\C-cc" 'org-capture)


Next: , Previous: キャプチャの設定, Up: キャプチャ

9.1.2 キャプチャの使用

c
C-c
c     (org-capture) org-caputreコマンドを呼びます。このキーバインドはグローバルで,デフォルトではアクティブになっておらず,インストールする必要があることに注意が必要です。もしテンプレートがあるならば defined see キャプチャテンプレート, これらのテンプレートの選択か、デフォルトのテンプレートを使用した新しい Org アウトラインノードが使用されます。


C-c C-c     (org-capture-finalize)
キャプチャバッファに情報を入力し終わったら、C-c C-cはキャプチャプロセスの前に設定されたウィンドウへ戻します。これによってこれ以上気を散らさずに作業を再開することができます。前置引数と一緒に呼ばれた場合は、仕上げをしたあとキャプチャした項目へ移動します。

C-w

C-c
C-w     (org-capture-refile) ノートを別の場所に差し替える(see ノートの再配置)ことでキャプチャプロセスを仕上げます。これは通常の差し替えコマンドが実行されることを認識してください。したがってこのコマンドを実行するときのカーソル位置が重要です。もし親や小を持つツリーを挿入する場合、まずカーソルを親へ移動してください。このコマンドに渡された接頭辞引数はすべてorg-refileコマンドに渡されます。


C-c C-k     (org-capture-kill)
キャプチャプロセスをアボートして前の状態へ戻ります。

org-captureをアジェンダからk cキーの組合せを用いた特別な方法で呼ぶこともできます。この方法では、選択されたキャプチャテンプレートに挿入されるタイムスタンプは、現在の日付ではなくアジェンダ内のカーソルがある位置の日付がデフォルトになります。

最後にキャプチャが保存された場所を探すには、org-captureをプレフィックスコマンドと一緒に使用します。

C-u C-c c
キャプチャテンプレートが対象としている場所に移動します。テンプレートの選択は通常と同じように行います。
C-u C-u C-c c
バッファ内で最後に保存したキャプチャアイテムの場所に移動します。


Previous: キャプチャの使用, Up: キャプチャ

9.1.3 キャプチャテンプレート

テンプレートは異なる種類のキャプチャアイテムや、異なる場所へ使用することができます。最も簡単にそのようなテンプレートを作る方法、カスタマイズインターフェースを通じて行うことです。

C-c c C
org-capture-templates変数のカスタマイズを行います。

テンプレート定義の正式な説明の前に、例を挙げます。一般的なTODOエントリーを作成する場合を考えます。また、これらのエントリーは~/org/gtd.orgの中にある見出し‘Tasks’の下に作成され、journal.org内のデートツリーはジャーナルエントリーがキャプチャされます。このような場合の設定は以下のようになります。

     (setq org-capture-templates
      '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
             "* TODO %?
       %i
       %a")
        ("j" "Journal" entry (file+datetree "~/org/journal.org")
             "* %?
     Entered on %U
       %i
       %a")))

ここでC-c c tを押すと、Org-modeはこのようなテンプレートを用意します。

     * TODO
       [[file:lint to where you initiated capture]]

テンプレートが展開される際、%aはキャプチャコマンドを呼んだ場所へのリンクに変換されます。これは例えばメールからタスクを登録する時にとても役立ちます。タスクの定義を埋め、C-c C-cを押すとOrg-modeはキャプチャ動作を始めた場所へまた連れ戻してくれます。

特定のテンプレートを対話的な選択なしに用いてキャプチャする特別なキーを定義するには、以下のようにキーバインドを作成できます。

     (define-key global-map "\C-cx\n"
       (lambda () (interactive) (org-capture nil "x")))


Next: , Previous: キャプチャテンプレート, Up: キャプチャテンプレート
9.1.3.1 テンプレートの要素

それではテンプレートを定義するための要素について述べています。org-capture-templates中にあるそれぞれのエントリーは以下の項目から構成されるリストです。

keys
キーは文字列で示されるテンプレートを文字だけで選択します。例えば、"a"はaキーだけで選択するテンプレートであり、"bt"は2つのキーで選択します。幾つかのキーを使う場合、同じ接頭辞キーを持つキーはリストの中で連続している必要があり、以下に例をあげるような、接頭辞キーを表す2つの要素を持つエントリーをその前に置きます。
                   ("b" "買い物リストのためのテンプレート")

もしCキーにテンプレートを定義していなければ、このキーでこの複雑な変数のカスタマイズバッファを開きます。

description
選択時に表示されるテンプレートの短い説明文。
type
エントリーの種類をシンボルで表します。正しい値は以下の通りです。
entry
見出しのついたOrg-modeのノード。対象エントリーの子かトップレベルのエントリーとして書き込まれます。対象のファイルはOrg-modeのファイルでなければならなりません。
item
対象の場所の最初にある単純なリストへ書き込まれる単純なリストの項目。対象のファイルはOrg-modeのファイルでなければならなりません。
checkitem
チェックボックス項目。これは単純なリストとデフォルトのテンプレートが異なるだけです。
table-line
対象の場所にある最初のテーブルへ追加する新しい行。行が追加される場所は:prepend:table-line-posプロパティに依存します。(下記参照)
plain
そのまま挿入される文章

target
キャプチャされた項目が挿入されるべき場所の指定。Org-modeファイルでは、通常ターゲットはノードで定義されます。エントリーはこのノードの子になります。他のタイプはこのノードの本文にあるテーブルやリストに追加されます。多くのターゲットの指定にはファイル名が含まれます。もしファイル名が空の文字列だった場合、org-default-notes-fileがデフォルトになります。ファイルは変数や関数、Emacs Lispのフォームでも与えられます。

正しい値は以下の通りです。

(file "path/to/file")
文章はこのファイルの先頭か最後に挿入されます。
(id "現存するorgエントリーのid")
このエントリーの子として、もしくはこのエントリの本文として記入します。
(file+headline "path/to/file" "node headline")
対象の見出しがファイル中で一つしか無い場合の速い設定。
(file+olp "path/to/file" "Leval 1 heading" "Leval 2" ...)
唯一でない見出しの場合、フルパスの方が安全です。
(file+regexp "path/to/file" "regexp to find location")
カーソルの位置に正規表現を使った場合。
(file+datatree "path/to/file")
今日の日付で日付ツリーの見出しを作ります。
(file+datetree+prompt "path/to/file")
promptで与えられた日付で日付ツリーの見出しを作ります。
(file+function "path/to/file" function-finding-location)
ファイルの中で正しい場所を見つける関数
(clock)
ファイル中で現在時間を測っているエントリー。
(function function-finding-location)
一般的な方法、ファイルと場所を見つける自分の関数を書く方法。

template
キャプチャする項目を作るテンプレート。もし空にした場合、デフォルトのテンプレートを使用します。もしエスケープコードを付加した文字列の場合、キャプチャされた時の時間と状況に依存して置換されます。エスケープされた文字列はテンプレートファイルからロードされ、特別な構文(file "path/to/template")を使用します。詳細をいかに示します。
properties
エントリーの残りは追加オプションのプロパティリストです。理解できるプロパティは
:prepend
通常新しくキャプチャされた情報は対象の場所(最後の子、最後のテーブル、最後のリスト項目...)に追加されます。このプロパティを設定することで変更します。
:immediate-finish
セットされると情報の編集を行わなず、追加だけを直ちに行います。テンプレートが自動的に追加できる情報だけを必要とする場合だけ意味を成します。
:empty-lines
新しい項目の前後に挿入する行の数をこれに設定します。デフォルトは0で、通常の他の値は1です。
:clock-in
この項目の時計を開始します。
:clock-keep
キャプチャしたエントリーを追加しても時計を動かし続けます。
:clock-resume
もし時計を割り込むキャプチャを始めた場合、キャプチャ終了時に時計を再開します。:clock-keep:clock-resumeより優先されることに注意が必要です。もしどちらの設定もtに設定された場合、現在の時計が動き、一つ前の時計は再開されません。
:unnarrowed
対象とするバッファの幅を狭めず、単純にフルバッファで表示します。デフォルトでは幅を狭くし、新しい内容だけが表示されます。
:kill-buffer
対象のファイルがキャプチャ時にまだ読み込まれていなかった場合、キャプチャ終了時に再びバッファを閉じます。


Previous: テンプレートの要素, Up: キャプチャテンプレート
9.1.3.2 テンプレートの拡張

テンプレート自身の中では、特別な%-エスケープ78によって動的に内容を挿入できます。

     %^{prompt} ユーザーに文字列を入力させこの順序と置換します。
                 デフォルトの値と補完テーブルは以下のように指定します。
                 %^{prompt|デフォルト値|補完2|補完3...}
                 矢印キーで入力の履歴をたどることができます。
     %a          注釈、通常はorg-store-linkで作成されたリンク
     %A          %aと同様、しかし説明部分への入力を行います。
     %i          初期の内容、キャプチャが呼ばれた時にアクティブに
                 なっているリージョン全体。
                 全体のテキストは%i自身と同じ様にインデントされます。
     %t          タイムスタンプ、日付のみ
     %T          時間と日付からなるタイムスタンプ
     %u, %U      上記と同じだが、不活性なタイムスタンプ
     %^t         %tと同じだが、日付の入力を行います。%^T%^u%^Uと似ています。
                 プロンプトを%^{Birthday}tの様に定義できます。
     %n          ユーザーネーム(user-full-nameから取ってきます)
     %c          現在のキルリングの先頭
     %x          Xクリップボードの内容
     %^C         キルかクリップどちらを使うか対話的に選択します。
     %^L         %^Cと同様だが、リンクとして挿入します。
     %k          現在計時しているタスクのタイトル。
     %K          現在計時しているタスクへのリンク。
     %f          org-captureが呼ばれた時に現在のバッファで表示していたファイル。
     %F          %fと同様だが、フルパスを含んでいます。
     %^g         タグの入力を対象ファイル中のタグから補完して入力します。
     %^G         タグの入力をアジェンダファイルすべてから補完して入力します。
     %^{prop}p   ユーザーにpropプロパティの値の入力を行わせます。
     %:keyword   あるリンクのタイプを指示する特定の情報
     %[file]     fileで与えられるファイルへ内容を挿入します。
     %(sexp)     sexpで与えられるElispを評価してその結果と入れ替えます。

リンクのタイプを指定するため、以下のキーワードが定義79されています。

     リンクタイプ       |  使用可能なキーワード
     -------------------+----------------------------------------------
     bbdb                    |  %:name %:company
     irc                     |  %:server %:port %:nick
     vm, wl, mh, mew, rmail  |  %:type %:subject %:message-id
                             |  %:from %:fromname %:fromaddress
                             |  %:to   %:toname   %:toaddress
                             |  %:date (ヘッダーメッセージ中にあるメッセージの日付)
                             |  %:date-timestamp (アクティブなタイムスタンプとしての日付)
                             |  %:date-timestamp-inactive (アクティブでないタイムスタンプとしての日付)
                             |  %:fromto (\"to NAME\"か\"from NAME\"のどちらか)80
     gnus                    |  %:group, メッセージとそれに加えてすべてのemailフィールドのため。
     w3, w3m                 |  %:url
     info                    |  %:file %:node
     calendar                |  %:date

テンプレート展開後のカーソル位置のために以下を用います。

     %?          テンプレートを完了したあと、カーソル位置をここに移動します。


Next: , Previous: キャプチャ, Up: キャプチャ/再配置/アーカイブ

9.2 添付

参照すべきものをアウトラインノートやタスクと連携させることは大抵役立ちます。小さなプレーンテキストの塊は単純にプロジェクトのサブツリーとして保存可能です。ハイパーリンク(see ハイパーリンク)はあなたのコンピュータやクラウドなどにあるファイル、例えばプロジェクトに関連するemailやソースコードファイルとの連携を確立します。その他の方法として、attachmentsがあります。これはアウトラインノードの属するディレクトリにあるファイルです。これらのディレクトリはdataディレクトリの中に位置し、あなたのOrgファイルが保存されているディレクトリと同じディレクトリの中にある81。もしこのディレクトリをgit initで初期化した場合、Org-modeは変更点を見つけた時に自動的にそれらをコミットします。添付システムはJohn Wiegleyの貢献によってOrg-modeへ追加されました。

もしそれがより良い方法に思える場合は、エントリーへディレクトリを添付することも自身の選択で可能です。子エントリーは親から添付ディレクトリを受け継ぐため、サブツリー全体が同じ添付ディレクトリを使うことになります。

以下のコマンドはプロパティを操作する助けとなります。

C-c C-a     (org-attach)
添付システムに関連するコマンドのコマンド選択画面。これらのキーのあとに、コマンドのリストが表示され、コマンドを選択するために更にキーを押す必要があります。
a     (org-attach-attach)
ファイルを選択してそれをタスクの添付ディレクトリへ移動します。ファイルはorg-attach-methodによって複製、移動、リンクされます。ハードリンクはすべてのシステムでサポートされていないことに注意が必要です。


c/m/l
コピー/移動/リンクメソッドを使ってファイルを添付します。ハードリンクはすべてのシステムでサポートされていないことに注意が必要です。


n     (org-attach-new)
Emacsのバッファとして新しい添付を作成します。


z     (org-attach-sync)
あなた自身で添付を追加した場合に、現在のタスクをその添付ディレクトリと同期します。


o     (org-attach-open)
現在のタスクに関する添付を開きます。もし1つ以上ある場合は、まずファイル名を入力させます。開き方はorg-file-appsに従います。詳細は、ハイパーリンクを辿るための情報(see リンクの扱い)を参照してください。


O     (org-attach-open-in-emacs)
これも添付を開きますが、強制的にファイルをEmacsを用います。


f     (org-attach-reveal)
現在のタスクの添付ディレクトリを開きます。


F     (org-attach-reveal-in-emacs)
これもディレクトリを開きますが、強制的にEmacs内でdiredを用います。


d     (org-attach-delete-one)
添付の1つを選択し削除します。


D     (org-attach-delete-all)
タスクに関連する添付をすべて削除します。安全な方法はdiredを用いてディレクトリを開き、そこから削除する方法です。


s     (org-attach-set-directory)
特定のディレクトリをエントリーの添付ディレクトリーに指定します。これはディレクトリのパスをATTAH_DIRプロパティに代入することで動作します。


i     (org-attach-set-inherit)
ATTACH_DIR_INHERITプロパティをセットします。これによって子も親と同じディレクトリを添付として使用します。


Next: , Previous: 添付, Up: キャプチャ/再配置/アーカイブ

9.3 RSSフィード

Org-modeはエントリーの追加や変更をRSSフィードとAtomフィードの情報を元に行うことができます。この機能を使ってプロダクトフィードのなかからそれぞれの新しいプロダクトに対してタスクを作ることも可能です。もしくは、携帯電話を対象としたWeb上のノート作成サービスをOrg-modeのタスクにインポートできます。フィードにアクセスするには、org-feed-alistを設定します。この変数のドキュメント文字列に詳細はあります。以下に例をしまします。

     (setq org-feed-alist
          '(("Slashdot"
              "http://rss.slashdot.org/Slashdot/slashdot"
              "~/txt/org/feeds.org" "Slashdot Entries")))

この例は、以下のコマンドが使われるたびに、rss.slashdot.orgで提供されているフィードの新しいアイテムから、~/org/feeds.orgファイル内に‘Slashdot Entries’をヘッダーにもつ新しいエントリーを生成します。

C-c C-x g     (org-feed-update-all)
C-c C-x g
org-feed-alistに設定されたフィードからアイテムを収集し、上記のように振る舞う。G
C-c C-x
G     (org-feed-goto-inbox) はフィード名を入力し、そのフィードに設定されたインボックスへ移動します。

幾つかの見出しでは、Org-modeは‘FEEDSTATUS’という引き出しを作成します。これはフィード中にあるアイテムのステータス情報を保存しています。なんども同じアイテムが追加されないためには、‘FEEDSTATUS’をファイルの引き出しの中に追加することが必要です。

     #+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS

Atomフィードの読み方などのより詳しい情報は、org-feed.elを御覧ください。また、org-feed-alistのドキュメント文字列もあります。


Next: , Previous: RSSフィード, Up: キャプチャ/再配置/アーカイブ

9.4 外部アクセスのためのプロトコル

Org-modeを扱うためのプロトコルを外部のアプリケーションから、emacsserverを通じてEmacsに渡すことができます。例えば、ウェブブラウザーのブックマークをキャプチャ(see キャプチャ)を使って現在のページへのリンクとしてOrg-modeに送り、新しいノートを作るように設定できます。または、Emacsに現在ウェブブラウザーで開いているウェブサイトのローカルにあるソースファイルを開くようなブックマークを作ることも出来ます。詳細な説明や設定方法はhttp://orgmode.org/worg/org-contrib/org-protocol.phpを御覧ください。


Next: , Previous: プロトコル, Up: キャプチャ/再配置/アーカイブ

9.5 ノートの再配置

キャプチャしたデータを見なおしているとき、幾つかのエントリーをプロジェクトなどの異なるリストへ移動したい時があるでしょう。カットし、正しい位置をさがし、ノートを貼り付けるのは面倒です。これを単純にするには、以下に示す特別なコマンドを使います。

C-c C-w     (org-refile)
エントリーや現在のリージョンをリファイルします。このコマンドはエントリーをリファイルする場所を求め、補完とともに1つ選択させます。アイテム(またはリージョン内のアイテム)は対象の見出しの下にサブアイテムとして挿入されます。org-reverse-note-orderに依存して、サブアイテムの先頭か最後のどちらかに挿入されます。
デフォルトでは、現在のバッファのレベル1の見出しすべては対象と考えられますが、いくつものファイルにまたがった複雑な定義もすることが可能です。詳細はorg-refile-targets変数をご覧ください。もし場所をアウトラインのパスをファイルパスのような補完で選択したければ、org-refile-use-outline-pathorg-outline-path-complete-in-steps変数をご覧ください。もしリファイルするノードの親ノードをその場で作れるようにしたいときは、org-refile-allow-creating-parent-nodes変数をご覧ください。org-log-refile変数82がセットされている場合、タイムスタンプやノートがエントリーがリファイルされたときに記録されます。C-c C-w
C-u
C-c C-w リファイルのインターフェースを見出しのジャンプに使います。C-w
C-u C-u C-c
C-w     (org-refile-goto-last-stored) org-refileが最後に木を移動させた場所に移動します。
C-2 C-c C-w
現在計時しているアイテムの子としてリファイルします。
C-0 C-c C-w or C-u C-u C-u C-c C-w
C-w
C-0 C-c C-w or C-u C-u C-u C-c C-w     (org-refile-cache-clear)

対象のキャッシュを削除します。リファイル対象のキャッシュはorg-refile-use-cacheを設定することで設定します。コマンドに新しい対象を見せるために、このコマンドでキャッシュを削除する必要があります。


Previous: ノートの再配置, Up: キャプチャ/再配置/アーカイブ

9.6 アーカイブ

(サブ)ツリーとして表現されたプロジェクトが終わった時、ツリーを外に移動し、それがアジェンダに現れない様にしたいでしょう。アーカイブは活動中のファイルをコンパクトにし、アジェンダビューを作るようなグローバルな検索を早くするために重要です。

C-c C-x C-a     (org-archive-subtree-default)
現在のエントリーをorg-archive-default-command変数で指定されたコマンドを使ってアーカイブします。


Next: , Previous: アーカイブ, Up: アーカイブ

9.6.1 ツリーをアーカイブファイルへ移動

もっとも一般的なアーカイブアクションはプロジェクトを他のファイル、アーカイブファイル、へ移動させることです。

C-c C-x C-s or short C-c $     (org-archive-subtree)
カーソルの場所から始まるサブツリーをorg-archive-locationで与えられる場所にアーカイブします。C-c C-x C-s
C-u
C-c C-x C-s 現在の見出しにある子がアーカイブへ移動可能か調べます。これを行うためには、それぞれのサブツリーがオープンなTODOエントリーとしてチェックされている必要がります。もし1つも見つからなければ、コマンドはこれをアーカイブの場所へ移動するか訪ねてきます。もしコマンドが入力されたときに、カーソルがへっどらいんでない場合、レベル1のツリーがチェックされます。

通常のアーカイブ場所は現在のファイルと同じディレクトリにある、現在のファイル名に_archiveを付加した名前のファイルです。これを変更するための情報や例は、org-archive-location変数のドキュメント文字列をご覧ください。以下に示すような、バッファ内でこれを変更するためのオプションもあります83

     #+ARCHIVE: %s_done::

もしあるエントリー又は(サブ)ツリーに対して特別なアーカイブ場所を指定したいときには、エントリーに:ARCHIVE:プロパティを場所を値として与えてください(see プロパティとカラム)。

もしサブツリーが移動した場合、エントリーが移動してきたファイル、アーカイブしたときのアウトラインパスなどのコンテクスト情報が記録されます。org-archive-save-context-info変数を設定することで追加される情報の量を調整します。


Previous: サブツリーを移動する, Up: アーカイブ

9.6.2 ファイル内部でのアーカイブ

もし異なるファイルへサブツリーを移動させずに、それをアジェンダビューで非表示にしたいなら、ARCHIVE tagを使うことができます。

ARCHIVE タグ(see タグ)でマークされている見出しはアウトラインツリー内の場所に留まりますが、下記のような振る舞いをします。

以下に示すコマンドがARCHIVEタグの編集に役立ちます。

a
C-c C-x
a     (org-toggle-archive-tag) 現在の見出しのARCHIVEタグをトグルする。もしタグが設定されているならば、見出しは shadowed faceに変更され、以下のサブツリーは隠されます。a
C-u C-c C-x
a現在の見出しが持つ直接の子がアーカイブされるべきかチェックする。これをおこなうには、それぞれのサブツリーがオープンなTODOエントリーかチェックされる。もし何も見つからなかった場合、コマンドは子にARCHIVEタグをセットする。カーソルがコマンド実行時に見出し上に無い場合、レベル1のツリーがチェックされる。
C-TAB     (org-force-cycle-archived)
もしARCHIVEタグがついていてもツリーの切り替えを行うC-x A
C-c
C-x A     (org-archive-to-archive-sibling) 現在のエントリーをアーカイブ兄弟に移動する。これは見出しが‘Archive’か‘ARCHIVE’タグの付いたエントリーの兄弟である。このエントリーはこの兄弟の子になる。そのため、継承したタグやアウトライン内のだいたいな位置など、従来の状況は保ち続けている。


Next: , Previous: キャプチャ/再配置/アーカイブ, Up: Top

10 アジェンダビュー

Org-modeで作業した結果、TODOアイテム、タイムスタンプのついたアイテム、タグの付いた見出しなどが、1つのファイル、あるいはいくつものファイルにまたがって、撒き散らされることとなります。ある特定の日に重要な、実際に動いているアイテムやイベントの全体像を把握するためには、ひとつの管理された方法で、これらの情報を集めたり、並び替えたりしながら、表示することが必要です。

Org-modeでは、いろいろな基準によってアイテムを選択することが可能であり、独立したバッファにそれらのアイテムを表示させることができます。7つの異なるビューのタイプが用意されています。:

抽出された情報は特別なアジェンダバッファに表示されます。このバッファはリードオンリーですが、オリジナルのOrg-modeファイルにジャンプしたり、オリジナルのファイルを間接的に編集することができます。

2つの変数によって、アジェンダバッファをどのように表示するか、アジェンダが存在したときに、ウインドウの設定を元に戻すかどうかをコントロールします。;org-agenda-window-setuporg-agenda-restore-windows-after-quit.


Next: , Previous: アジェンダビュー, Up: アジェンダビュー

10.1 アジェンダファイル

表示される情報は、通常すべてのアジェンダファイルから収集されます。アジェンダファイルはorg-agenda-files84変数にリスト化されたファイルが対象となります。もしもこのリストの中にディレクトリ名が記載されていたら、 そのディレクトリの中にある.orgという拡張子がついた全てのファイルが、アジェンダファイルの対象となります。

したがって、たとえあなたが1つのOrg-modeファイルでしか作業をしていなくても、このファイルをそのリスト85に記載したことになるでしょう。org-agenda-filesをカスタマイズすることが可能で、しかも以下に述べるコマンドを通して簡単な方法で維持することができます。

[
C-c
[     (org-agenda-file-to-front)  アジェンダファイルのリストに編集中のファイルを追加する。そのファイルは、リストの先頭に追加される。もしも既にリストに存在していたら、先頭に移動する。前置引数をつけることで、リストの最後に追加/移動する。]
C-c
]     (org-remove-file)  編集中のファイルをアジェンダファイルのリストから削除する。
C-'     (org-cycle-agenda-files)
C-,
アジェンダファイルのリストに従って、1つのファイルから次のファイルへと切り替える。
M-x org-iswitchb
iswitchbと似たようなインターフェースでOrg-modeのバッファの間を切り替えるコマンド。

Org-modeメニューには、現時点のファイルのリストが含まれており、その中のファイルに移動するのに役立ちます。

もしもこのリストに載っているファイルではなく、作業中のアジェンダファイルに焦点をあてたかったり、リストにあるファイルのまさにひとつのファイルに焦点をあてたかったり、はたまたあるファイルの中のあるサブツリーに焦点をあてたかったりしたいときは、いくつかの方法が用意されています。単一のアジェンダコマンドとして、コマンド選択画面上 (see アジェンダのコマンド選択)で<を1回ないし数回押すとよいのです。アジェンダの対象をある限定した期間に絞り込むために以下のコマンドが用意されています。:

<
C-c C-x
<     (org-agenda-set-restriction-lock) アジェンダの対象を現在カーソルが置かれているサブツリーに固定的に制限します。前置引数をつけたり、ファイルの最初の見出しよりも前にカーソルが置かれているときには、アジェンダの対象範囲はファイル全体になります。この制約はC-c C-x >を実行して取り除くか、<または>をアジェンダのコマンド選択画面上で入力するまでは維持します。もしもウインドウ上にアジェンダビューが表示されているならば、あたらしい制約が即座に効果を及ぼします。C-x >
C-c
C-x >     (org-agenda-remove-restriction-lock) C-c C-x <で作成された固定する制限を削除します。

speedbar.elを併用しているときは、Speedbarのフレームの中で以下のコマンドを使用することができます。

< in the speedbar
frame     (org-speedbar-set-agenda-restriction)  Speedbarのフレームの中で、1つのOrg-modeファイルか、そのファイルのサブツリーの一つか、カーソルの置かれているアイテムに対応してアジェンダを恒久的に限定します。もしもアジェンダビューが表示されているウインドウがあるならば、限定箇所が変更されると即座に反映する。
>
in the speedbar frame     (org-agenda-remove-restriction-lock)  制限をふたたび解除する。


Next: , Previous: アジェンダファイル, Up: アジェンダビュー

10.2 アジェンダのコマンド選択画面

グローバルなキーと結びついている、コマンド選択画面を通してそのビューは作成されます。—例えば、C-c a (see インストール)のように。以下のように、コマンド選択画面にアクセスする方法としてC-c aを想定しており、キーボードでコマンドにアクセスするためのリストが表示されています。C-c aを入力した後、コマンドを実行するために、次に入力する文字を要求します。コマンド選択画面では以下に記載するデフォルトのコマンドが提供されています。

a
カレンダーのようなアジェンダを作成します。(see 毎週/毎日のアジェンダ)
t / T
すべてのTODOアイテムのリストを作成します。 (see グローバルなTODOリスト)
m / M
タグの表記にマッチした見出しのリストを作成します。(see タグとプロパティとのマッチング)
L
カレントバッファ用のタイムラインのビューを作成します。(see タイムライン)
s
そのエントリーに存在するしないにかかわらず、and/orという正規表現によるキーワードの論理式で選択したエントリのリストを作成します。
/
すべてのアジェンダファイルとorg-agenda-text-search-extra-filesの中でリスト化かれているファイルの中から正規表現を用いて検索します。これはEmacsのmulti-occurというコマンドを使用します。前置引数をつけると、それぞれのマッチした行の状況の数をしていすることができます。デフォルトは1となっています。
# / !
詳細が未決定のプロジェクトのリストを作成します。(see 詳細が未決定なプロジェクト)
<
カレントバッファ86に対してアジェンダコマンドを制限します。<を入力したあと、コマンドを選択するために文字を入力する必要があります。
< <
もしもアクティブなリージョンがあるときは、以下のようなアジェンダコマンドがそのリージョンに限定されます。一方、カレントのサブツリー87に限定することもできます。< <を入力したあと、コマンドを選択する文字を入力する必要があります。

あなたは、あたかもデフォルトのコマンドのように、コマンド選択画面でアクセスするカスタムコマンドを定義することもできます。複数のブロックを同時に含めた拡張されたアジェンダバッファを作成する可能性を含んでいます。例えば週のアジェンダ、グローバルなTODOリスト、そして多数の特定タグの検索など。See アジェンダのカラム表示.


Next: , Previous: アジェンダのコマンド選択, Up: アジェンダビュー

10.3 アジェンダに組み込まれているビュー

このセクションではビルトインビューについて説明します。


Next: , Previous: 組み込みのアジェンダビュー, Up: 組み込みのアジェンダビュー

10.3.1 毎週/毎日のアジェンダ

1週間の/1日のアジェンダの目的は、その週あるいはその日のタスクをすべて表示して、紙のアジェンダのページのように、実行に移すことです。

a
C-c a
a     (org-agenda-list)  Org-modeのファイルのリストの中からその週の予定を収集するものです。予定はそれぞれの日に表示されます。(C-u 2 1 C-c a aのように)前置引数に数字をつけて88表示する日数を設定することができます。

表示されるデフォルトの日数は、org-agenda-span(あるいは古くさくなってしまいましたがorg-agenda-ndays)という変数で設定します。この変数は、アジェンダの中でデフォルトとして確認したい日数、あるいは、期間を示すdayweekmonthyearといった期間を示す名前をつけて設定します。

アジェンダバッファからリモートで編集するとは、例えば、アジェンダバッファの中でデッドラインやアポイントメントの日付を変更することができるという意味です。アジェンダバッファの中で利用できるコマンドは、アジェンダのコマンドの中で一覧表にしています。

カレンダー/日記の統合

Emacsには、Edward M. Reingoldによって開発されたカレンダーと日記の機能があります。カレンダーでは、国や文化の異なる祝祭日を備えた3ヵ月分のカレンダーが表示されます。日記には記念日、月の満ち欠け、日の出日の入り、繰り返しの予定(隔週、隔月)などを記録しておくことができます。このような機能は、Org-modeに対して大変補完的な関係にあります。日記とOrg-modeの出力を結びつけることは大変有益です。

Emacsの日記からOrg-modeのアジェンダに項目を落とし込むために、あなたは次のように変数を設定するだけです。

     (setq org-agenda-include-diary t)

その後、すべてが自動的に行われます。祝祭日や記念日などを含むすべての項目は、Org-modeで作成されるジェンダバッファに取り込むことができます。日記に記録されている項目を編集するために、アジェンダバッファ上で<SPC>、 <TAB>、及び <RET>を入力することで、日記のファイルにジャンプすることができます。その日に新しいエントリーを挿入するiというコマンドはアジェンダバッファ上で動作します。あたかも、日の出日の入りの時刻を表示したり、月の満ち欠けの状態を表示したり、他の暦に変換するための、SM、およびCというコマンドと同様です。 cはカレンダーとアジェンダの間を行ったり来たりすることができます。

もしもあなたが日記をS式項目と祝祭日だけで使用しているのならば、上のような設定をするよりも、Org-modeファイルに直接コピーしたり移動したりしたほうが手っ取り早いです。Org-modeは日記形式のS式項目を評価し、しかもより早く、というのは、最初にカレンダーを表示するという負荷がかからないからです。S式項目は左端から記述し、式の前にスペースが入ってはいけないことに注意してください。たとえば、あるOrg-modeファイルについての、以下にのべるセグメントが処理され、項目がアジェンダの中に作成されます。

     * Birthdays and similar stuff
     #+CATEGORY: Holiday
     %%(org-calendar-holiday)   ; special function for holiday names
     #+CATEGORY: Ann
     %%(diary-anniversary  5 14 1956)89 Arthur Dent is %d years old
     %%(diary-anniversary 10  2 1869) Mahatma Gandhi would be %d years old
Anniversaries from BBDB

もしもBig Brothers Databaseを使用して連絡先を管理しているのならば、あなたは先に述べたのと同様に、独立したOrg-modeのファイルや日記のファイルに登録するよりも、BBDBの中に記念日を登録したいと考えるでしょう。Org-modeはこれもサポートしており、アジェンダの一部としてBBDBの記念日を表示することができます。そのために必要なことは、以下のような記述をアジェンダファイルに行うことです。

     * Anniversaries
       :PROPERTIES:
       :CATEGORY: Anniv
       :END:
     %%(org-bbdb-anniversaries)

それからBBDBのデータレコードのための記念日の定義に取り掛かることができます。基本的には、BBDBのレコードの中にカーソルを置いて、C-o anniversary <RET>を実行し、それから日付をYYYY-MM-DDまたはMM-DDの形式で記入し、半角スペースに続けて記念日の種類(‘birthday’、‘wedding’、または定型句)のクラスを記入します。もしもクラスを省略した場合は、デフォルトでは‘birthday’であるとみなします。いくつかの例を書いてみました。org-bbdb.elファイルの先頭のところにもう少し詳しい説明が書いてあります。

     1973-06-22
     06-22
     1955-08-02 wedding
     2008-04-14 %s released version 6.01 of org-mode, %d years ago

BBDBを変更したり、Emacsのセッションで最初にアジェンダを表示したとき後は、アジェンダの表示が少し遅くなるかもしれません。というのはOrg-modeが記念日のハッシュデータを更新するからです。しかしながら、そのことについていうと非常に早いといえます。実際Org-modeの日記ファイルに‘%%(diary-anniversary)’のエントリーを長々と書き連ねた場合よりもずっと早いと言えるでしょう。

Appointment reminders

Org-modeはEmacsの予定を通知する機能と連携しています。あなたのアジェンダファイルに含まれているすべてのアポイントを追加するために、org-agenda-to-apptコマンドを使います。このコマンドはあなたの予定のリストにフィルターをかけ、特別なカテゴリーに属しているものや正規表現の検索に合致したものを追加します。詳細はドキュメント文字列を参照してください。


Next: , Previous: 毎週/毎日のアジェンダ, Up: 組み込みのアジェンダビュー

10.3.2 The global TODO list

グローバルなTODOリストには、形式を整えられ、1つの場所に集められたすべての未完了のTODOアイテムが含まれています。

t
C-c a
t     (org-todo-list)  グローバルなTODOリストを表示します。これはすべてのアジェンダファイル(see アジェンダビュー)からTODOアイテムを1つのバッファに集約します。デフォルトでは、このアイテムのリストはDONEという状態ではないアイテムです。そのバッファはagenda-modeとなり、そのバッファからTODOアイテムを直接調べたり操作したりするコマンドが用意されています(see アジェンダのコマンド)。 上と似ていますが、指定したTODOキーワードと合致したものを表示します。同じことを前置引数をつけてC-c a tを実行することでも指定できます。キーワードの入力を促す指示が表示され、そして複数のキーワードを論理式ORという意味で‘|’で区切って指定することができます。数字付きの前置引数をつけるとorg-todo-keywordsの中のN番目のキーワードを選択することができます。 rキーをアジェンダバッファで使用するとバッファの再構成が行われます。たとえば3 rというように、前置引数をつけてこのコマンドを実行すると選択したTODOキーワードが変更することができます。もしも特定のキーワードを使って検索することが多い場合は、カスタムコマンドを定義することもできます(see アジェンダのコマンド選択)。
特定のTODOキーワードと合致するものを検索するのは、タグ検索の1機能として行うこともできます(see タグの検索)。

リモートでTODOアイテムを編集するということの意味は、1つのキーを入力することでTODOエントリーの状態を変更できるということです。TODOリストの中で利用できるコマンドはアジェンダのコマンドの記述を参考にしてください。

通常グローバルなTODOリストには、TODOキーワードのついたすべて見出しが表示されます。このリストは大変長いものになる場合もあります。それをコンパクトにするには2つの方法があります。


Next: , Previous: グローバルなTODOリスト, Up: 組み込みのアジェンダビュー

10.3.3 タグとプロパティとのマッチング

アジェンダファイルの中の見出しにtags(see タグ)がついていたり、あるいは属性(see プロパティとカラム)がついていたときは、このメタデータに基づいて見出しを選択し、アジェンダバッファに収集することができます。この項で述べている検索構文はC-c / mを用いたツリーの抽出を行うときも適用できます。

m
C-c a
m     (org-tags-view)  一組のタグのセットに合致したすべての見出しのリストを作成します。選択の基準の入力を指示するコマンドでタグのついた論理式による表現で記入します。例えば、‘+work+urgent-withboss’あるいは‘work|home’ というように(see タグ)。もしも特定の検索をよく行うならばそのためのカスタムコマンドを定義することができます(see アジェンダのコマンド選択)。a M
C-c
a M     (org-tags-view)

C-c a mと似ていますが、not-DONEの状態にあるTODOアイテムの見出しから選択するもので、自動的にサブアイテムもチェックします(org-tags-match-list-sublevels変数参照)。予定/期限のついたアイテムを除外するにはorg-agenda-tags-todo-honor-ignore-optionsの変数を参照してください。特定のTODOキーワードをタグの一致と一緒に指定することも可能です。タグの検索を参照してください。

タグのリストで利用できるコマンドはアジェンダのコマンドのところで説明しています。

Match syntax

検索文字列ではANDの意味で‘&’、ORの意味で‘|’という論理式を使うことができます。‘&’は‘|’よりも強く結びつけます。括弧( )は現在準備されていません。検索のどの要素も、タグそのものか、正規表現でマッチしたタグか、あるいはPROPERTY OPERATOR VALUEのような属性値にアクセスして比較操作のできる値のいずれかになります。どの要素も‘-’を先頭につけてそれ以外のものを表現するか、‘+’を先頭につけてポジティブな選択を行う、というような糖衣構文(簡便な構文)で表現します。‘&’でANDを取り扱うことは‘+’、‘-’で表現できるもののオプションです。下にタグだけをつかったいくつかの例を挙げておきました。

+work-boss
:work:’というタグがついているが、‘:boss:’というタグがついていない見出しを選択します。
work|laptop
:work:’または‘:laptop:’というタグがついたものを選択します。
work|laptop+night
前の文と同じですが、‘:laptop:’の行には、同時に‘:night:’というタグが付いている必要があります。

タグの代わりに、大括弧でくくられた正規表現により指定をすることもできます。例えば、‘work+{^boss.*}’と指定すると、‘:work:’というタグのついた見出しで‘boss’という単語でstartingするタグがついているものに一致します。

タグとマッチするものを探すと同時に属性(see プロパティとカラム)の検索をすることも可能です。属性としては実際の属性のほかに、他のメタデータで表現された特別な属性(see スペシャルプロパティ)にも対応しています。例えば、そのエントリーの中のTODOキーワードで表現されたTODOという「属性」。あるいは、そのエントリーの階層を示すLEVELという「属性」などです。そのため、‘+LEVEL=3+boss-TODO="DONE"’という検索式は、第3階層のすべての見出しの中で、‘boss’というタグがついており、TODOキーワードがDONEでは‘ない’もののリストを表示します。org-odd-levels-onlyという設定がなされているバッファでは‘LEVEL’は*の数を数えるのではなく、‘LEVEL=2’(2番目) の階層は*が3つある階層が該当します。

いくつかの例を紹介します。

work+TODO="WAITING"
:work:’というタグがあるTODO行のうち、特にTODOキーワードが‘WAITING’となっている行を選択します。
work+TODO="WAITING"|home+TODO="WAITING"
workとhomeというタグがついているWaitingとなっているタスク

属性の検索では、多数の異なる操作で属性の値をテストすることができます。複雑な例を挙げます。

     +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2         \
              +With={Sarah\|Denny}+SCHEDULED>="<2008-10-11>"

比較のタイプは比較の値がどのように書かれているかによります。

そのため、例に掲げた検索文字列の意味は、‘:work:’というタグがつけられているが、‘:boss:’というタグはついておらず、また、優先順位の値が‘A’であり、‘:Coffee:’が‘unlimited’という値であり、‘Effort’ 属性が数値で2より小さく、‘:With:’の値が‘Sarah\|Denny’であり、スケジュールが2008年10月11日もしくはそれ以降に予約されたものを示しています。

TODO、LEVEL、CATEGORYを検索するときは短時間ですみます。それ以外の属性を検索するときはいささか時間がかかります。しかしながら、一度高い代償を払って1つのプロパティを検索したら、他の属性を追加して再び検索するときは安くあがります。

検索の際にOrg-modeで属性の継承という機能を使用するように設定することができますが、相当検索スピードが落ちることを覚悟してください。詳細はプロパティの継承参照。

逆互換として、さらにまたタイプのスピードを上げるために、検索においてTODOの状態をテストする別の方法があります。このためには、検索文字列(それは‘|’で結合された複数の用語が含まれていると思いますが)のタグ・属性検索の部分を‘/’を使って終了させ、TODOキーワードを論理式で結んで指定します。その構文はタグの検索で使用したのと似ていますが、よく考えて適用する必要があります。例えば、複数のTODOキーワードが存在することを検索するには論理式のANDで結びつけても意味がありません。しかしながら、negative selection(存在しないことを選択する場合)では「AND」で結合することは意味を持ちます。これを確かめるには、実際にいくつかのTODOキーワードで、C-c a Mを用いて確認するだけです(そのほうがスピードアップできます)。あるいはスラッシュのあとに‘!’を記入して同時にTODOの部分を開始します。C-c a Mまたは‘/!’を使用したときは、DONEの状態にあるTODOキーワードを検索することはできません。例えば、

work/WAITING
work+TODO="WAITING"’と同じ
work/!-WAITING-NEXT
:work:’を選択。ただしTODO行では‘WAITING’と‘NEXT’のどちらのタグもついていないもの
work/!+WAITING|+NEXT
:work:’を選択。TODO行に‘WAITING’か‘NEXT’かどちらかのタグがついているもの。


Next: , Previous: タグとプロパティとのマッチング, Up: 組み込みのアジェンダビュー

10.3.4 Timeline for a single file

タイムラインはひとつのOrg-modeファイルの中からtime-sorted view(時間順のビュー)ですべてのタイムスタンプのついたアイテムをまとめてて表示します。このコマンドの主な目的は、あるプロジェクトに含まれているイベント全体の概要をつかむためにあります。

L
C-c a
L     (org-timeline) すべてのタイムスタンプの付いたアイテムについて、Org-modeファイルの中で時間順のビューを提供します。C-uという前置引数をつけて呼び出したときは、現在の日付の時点で、すべての未完了のTODOエントリー(予約されているものも、そうでないものも)を一覧にします。

タイムラインのバッファで利用できるコマンドは、アジェンダのコマンドにリスト化されています。


Next: , Previous: タイムライン, Up: 組み込みのアジェンダビュー

10.3.5 検索ビュー

アジェンダのビューではOrg-modeのエントリーに対する一般的なテキスト検索機能を持っています。これはノートを探すのに特に役に立ちます。

s
C-c a
s     (org-search-view)  このコマンドは特別な検索のためのもので、論理式を使って、文字列または特定の単語に合致するエントリーを選択します。
例えば、‘computer equipment’という検索文字列は、‘computer equipment’という1つの文字列が含まれているエントリーを検索するでしょう。もしも、2つの単語が、1つ以上のスペースまたは改行で分かれていても、依然として一致するものを検索するでしょう。検索ビューでは、エントリーの中にある特別なキーワードについて論理式を使って検索することもできます。‘+computer +wifi -ethernet -{8\.11[bg]}’という検索文字列では、次のようなノートエントリーを検索します。computerwifiというキーワードを含んでおり、ethernetというキーワードは含まれておらず、8\.11[bg]という正規表現を含んでいない、すなわち8.11bおよび 8.11gともに含まれていないという意味ですが、エントリーを検索します。最初の‘+’は単語検索を開始するために必要ですが、ほかの‘+’はオプションです。詳しく知りたい場合は、org-search-viewというコマンドのドキュメント文字列を参照してください。

アジェンダファイルに加えて、このコマンドはorg-agenda-text-search-extra-filesの中で一覧になっているファイルもまた検索するということに注意してください。


Previous: 検索ビュー, Up: 組み込みのアジェンダビュー

10.3.6 詳細が未決定なプロジェクト

もしもあなたが、以下に述べるようなDavid Allen氏のGTDのようなシステムであなたの仕事を管理しているならば、あなたが抱えている「義務」のひとつは、すべてのプロジェクトが進んでいるかを明確にするために、レビューを定期的に行うことです。詳細が未決定のプロジェクトは、次の行動が何も定義がされていないため、Org-modeが提示するTODOリストに、全く何も表示されることがないのです。レビューをする際に、そういったプロジェクトを明確にし、それらのプロジェクトための次の行動を定義することが必要です。

C-c a #     (org-agenda-list-stuck-projects)
 詳細が未決定のプロジェクトリスト
C-c a !
org-stuck-projectsの変数をカスタマイズすることで何が詳細が未決定のプロジェクトで、どうやったらそういうプロジェクトを発見できるかを定義することができます。

あなたは九分九厘このコマンドが機能するために、このビューを定義する必要があります。あらかじめビルトインされているデフォルトの設定では、すべてのあなたのプロジェクトは第2階層の見出しに記述されており、あるプロジェクトが未決定であるとはいえない状況とは、すくなくとも1つのエントリーにTODOまたはNEXTまたはNEXTACTIONという印がつけられている場合です。

Org-modeを使う際に、あなた自身の方法でアプローチするとして、PROJECTというタグがあるものをプロジェクトと定義し、プロジェクトがまだ検討する段階にないということを示すためにTODOキーワードでMAYBEと書いているものと仮定しましょう。さらにTODOキーワードでDONEという印の付いたものは完了したプロジェクトであると仮定しましょう。そしてまたNEXTもしくはTODOと書かれたものはNextActionであると仮定しましょう。@SHOPというタグがついたときはNEXTというタグが付いていなくても、ショッピングに行くという次の行動を示しているとします。最終的に、もしもプロジェクトにIGNORE(無視)という特別なキーワードがどこかについていたら、それはリストに表示されないものとします。このようなケースの場合、タグ・TODO90が‘+PROJECT/-MAYBE-DONE’とマッチし、さらにサブツリーにTODO、NEXT、@SHOP、およびIGNOREというタグが付いているようなプロジェクトは、詳細が未決定のプロジェクトではないといえます。このようなカスタマイズを正しく定義するには、

     (setq org-stuck-projects
           '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@SHOP")
                                    "\\<IGNORE\\>"))

もしもあるプロジェクトが詳細が未決定のプロジェクトではないと定義されたならば、そのエントリーのサブツリーは依然として詳細が未決定のプロジェクトとして検索されるということに注意してください。


Next: , Previous: 組み込みのアジェンダビュー, Up: アジェンダビュー

10.4 表示とソート

アジェンダビューにアイテムが表示される前に、Org-modeではそのアイテムを表示し並び替える準備を行っています。それぞれのアイテムは1行を占めます。その行にはその項目のcategory (see カテゴリ)を含んだprefixとそれ以外の重要な情報を含んでいます。あなたはorg-agenda-tags-columnを使って表示されるコラムタグをカスタマイズすることができます。org-agenda-prefix-formatのオプションを使用して前置引数をカスタマイズすることができます。この前置引数は、そのアイテムに関連するアウトラインの見出しの最新のバージョンに従います。


Next: , Previous: 表示とソート, Up: 表示とソート

10.4.1 カテゴリ

カテゴリーとは、それぞれのアジェンダアイテムに割り当てられた幅の広いラベルです。デフォルトでは、カテゴリーはファイルの名前から単純に作成されます。しかし、バッファ上で特別な行を足すことでそれを指定することができます。91

     #+CATEGORY: Thesis

もしもあなたが、1つのエントリーもしくは1つの(サブ)ツリーに特別なCATEGORYを持たせたいと望むのならば、そのエントリーに、値として適用したいと思っている特別なカテゴリーを:CATEGORY:という属性に設定しなさい。

アジェンダバッファの表示は、そのカテゴリーが10文字以上長くしない方が見栄えが良いです。

あなたはorg-agenda-category-icon-alist変数をカスタマイズすることで、カテゴリーにアイコンを設定することができます。


Next: , Previous: カテゴリ, Up: 表示とソート

10.4.2 時刻の仕様

Org-modeは時刻の仕様に基づいて、それぞれのアジェンダアイテムをチェックします。時刻は、例えば、‘<2005-05-10 Tue 19:00>のように、アジェンダの中に含まれているものをトリガーとしたタイムスタンプの一部です。時間の幅は2つのタイムスタンプで指定され、例えば‘<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>のように記載されます。

そのエントリー自身の見出しの中で、時刻(時間)はプレーンなテキストとして(‘12:45’や‘8:30-1pm’)のように表示されます。もしもアジェンダがEmacsのダイアリー(see 毎週/毎日のアジェンダ)と一体化されていたときは、ダイアリーのエントリーの中で指定した時間は、同様に認識されます。

アジェンダの表示のために、Org-modeは時間を引き出し、前置引数の一部として標準的な24時間のフォーマットでそれを表示します。前の段落に書かれた時間の例は、アジェンダの中で結局以下のように表示されます。

         8:30-13:00 Arthur Dent lies in front of the bulldozer
        12:45...... Ford Prefect arrives and takes Arthur to the pub
        19:00...... The Vogon reads his poem
        20:30-22:15 Marvin escorts the Hitchhikers to the bridge

もしもアジェンダが一日モードであるならば、あるいは今日を表示しているならば、時間設定されたエントリーは、次のような時間のグリッドに埋め込まれます。

         8:00...... ------------------
         8:30-13:00 Arthur Dent lies in front of the bulldozer
        10:00...... ------------------
        12:00...... ------------------
        12:45...... Ford Prefect arrives and takes Arthur to the pub
        14:00...... ------------------
        16:00...... ------------------
        18:00...... ------------------
        19:00...... The Vogon reads his poem
        20:00...... ------------------
        20:30-22:15 Marvin escorts the Hitchhikers to the bridge

時間のグリッドは、org-agenda-use-time-grid変数で表示したりしなかったさせることができます。そしてまたorg-agenda-time-gridで設定をすることができます。


Previous: 時刻の仕様, Up: 表示とソート

10.4.3 アジェンダの項目をソートする

ビューに書き出される前に、各アイテムは並び替えが行われます。この並び替えはビューのタイプによって決まります。

並び替えは、org-agenda-sorting-strategy変数でカスタマイズすることができます。そして、並び替えはそのエントリーの工数の見積りに基づく評価も含まれます。


Next: , Previous: 表示とソート, Up: アジェンダビュー

10.5 Commands in the agenda buffer

アジェンダバッファでのエントリーは、その項目が作成されたOrg-modeファイルと日記ファイルの間でリンクされます。アジェンダバッファでは編集することはできませんが、コマンドを使って、そのエントリーがある場所を表示したり、ジャンプして、アジェンダバッファから「遠隔的に」Org-modeファイルを編集することができます。この方法で、すべての情報は1度書き込めばよく、あなたがアジェンダとノートのファイルが別の情報になるというリスクを避けることができます。

いくつかのコマンドはアジェンダの行上でマウスをクリックすることで実行されます。それ以外のコマンドは、必要とされる行の中にカーソルが置かれている必要があります。

Motion

n     (org-agenda-next-line)
 次の行へ(<up>及びC-pと同じ)。
p     (org-agenda-previous-line)
 次の行へ(<down>及びC-nと同じ)。
View/Go
to Org file  
<SPC> or mouse-3     (org-agenda-show-and-scroll-up)
 そのアイテムのオリジナルの場所を別のウインドウで表示する。前置引数を使うことで、見出しだけでなく、アウトライン上にエントリー全体を明確に表示する。
L     (org-agenda-recenter)
 オリジナルの場所を表示し、ウインドウのセンターに再配置する。
<TAB> or mouse-2     (org-agenda-goto)
 別のウインドウでそのアイテムのオリジナルの場所に移動する。
<RET>     (org-agenda-switch-to)
 そのアイテムのオリジナルの場所に移動し、他のウインドウは削除する。
F     (org-agenda-follow-mode)
Followモードをトグルする。Followモードではアジェンダバッファ上でカーソルを動かすと、Org-modeファイルの中で、別のウインドウ上で対応する場所を表示する。新しいアジェンダバッファの中でこのモードの初期設定値は、org-agenda-start-with-follow-mode変数で設定することができる。C-x b
C-c
C-x b     (org-agenda-tree-to-indirect-buffer)  間接的なバッファの中で可憐とアイテムのサブツリー全体を表示する。数値付きの前置引数Nをつけると、第N階層まで階層を上がり、そのツリーを取得する。もしもNがマイナスならば、多くの階層まで上がる。C-uという前置引数を付けた場合は、既に使われた間接的バッファは消去されない。

C-o

C-c
C-o     (org-agenda-open-link)  エントリーの中にあるリンクをフォローする。この機能は、参照されているOrg-modeのノードに属しているテキストの中に含まれているいくつかのリンクの中から選択するという機能を提供する。もしもリンクが1つしかない場合は、選択画面を表示せずに、そこにリンクを貼る。
Change display

o
他のウインドウを削除します。
v d or short d     (org-aganda-day-view)
w
v
w or short w     (org-aganda-day-view)
v m     (org-agenda-month-view)
y
v
y     (org-agenda-month-year)
v SPC     (org-agenda-reset-view)
日/週/月/年のビューを切り替えます。日または週にビューを切り替えたときは、この設定は、それに続くアジェンダの更新ついてのデフォルトの設定となります。月および年のビューは、作成するために時間を要するので、デフォルトとはしていません。数字の付いた前置引数をつけると、その年、ISOの週、月、年の指定した日に直接ジャンプします。例えば32 dと書いたときは2月1日、9 wと書いたらISOの週番号が9を指します。日、週あるいは月のビューを設定したときは、1年は同様に前置引数の中でコード化されます。例えば、200712 wと書いたときは2007年の第12週にジャンプするでしょう。もしもそのような年の指定を、1桁もしくは2桁の数字で行いたいたときは、1938年から2037年の間に位置づけられます。v <SPC>によって、org-agenda-spanでの設定をリセットすることができます。
f     (org-agenda-later)
 時間を前の日付の表示へと遡ります。
.     (org-agenda-goto-today)
 今日へ移動します。
j     (org-agenda-goto-date)
 日付の選択画面でその日に移動します。
J     (org-agenda-clock-goto)
 アジェンダバッファの中で現在時間を計測中のタスクに移動します。
D     (org-agenda-toggle-diary)
 日記のエントリーに含めるかどうかトグルします。参照毎週/毎日のアジェンダ.l
v
l or short l     (org-agenda-log-mode)

Logbook modeにするかどうかをトグルします。Logbook modeの中では、ログの取得中に(変数 org-log-done)DONEと印が付けられたエントリーが、その日の時刻を持っているエントリーとして、アジェンダの中に表示されます。org-agenda-log-mode-items変数を用いてlogモードに含まれるエントリーのタイプを設定することができます。C-uという前置引数をつけて呼び出すと、状態の変化を含め、すべてのおこりうるlogbookのエントリーを表示できるでしょう。C-u C-uという2つの前置引数をつけて呼び出すと、ログの情報のみが表示され、それ以外は表示されません。v Lは、C-u v lと等価です。[

v
[ or short [     (org-agenda-manipulate-query-add)  現在のビューに、不活性のタイムスタンプを含めます。週/日のアジェンダとタイムラインビューのみです。a
v
a     (org-agenda-archives-mode) 'files
v A     (org-agenda-archives-mode
'files)  Archivesモードをトグルします。Archivesモードでは、ARCHIVEDと印されたツリーもまたアジェンダを作成するときにスキャンされます。大文字のAを使用したときは、全てのアーカイブファイルを含みます。archives modeから出るためには、再度v aを押してください。R
v
R or short R     (org-agenda-clockreport-mode)

Clockreportモードをトグルします。Clockreportモードでは、日/週のアジェンダは、時間軸のための時刻のついた表を表示し、カレントのアジェンダビューでカバーされる範囲をファイルします。新しいアジェンダバッファの中で、このモードの初期設定は、org-agenda-start-with-clockreport-mode変数で設定することができます。このモードをトグル(すなわち C-u R)している時に、前置引数を使用することで、アジェンダフィルター92によって隠されているエントリーからの情報を表示しないでしょう。E

v
E or short E     (org-agenda-entry-text-mode)

entry text modeをトグルします。entry text modeでは、アジェンダ行によって参照されているOrg-modeのアウトラインのノードから、多数の行が、その行の下に表示されるでしょう。最大の行数は、org-agenda-entry-text-maxlines変数で指定します。数値付きの前置引数を付けて、このコマンドを呼び出すと、前置引数の値の数によって、即座に修正されます。

G     (org-agenda-toggle-time-grid)
時間のグリッドの表示をトグルします。org-agenda-use-time-gridorg-agenda-time-grid変数を参照してください。
r     (org-agenda-rodo)
 アジェンダバッファを再構築する。例えば、S-<left>S-<right>を使って、アイテムのタイムスタンプを改修したあと、その変更を反映するために。そのバッファがグローバルなTODOリストの場合は、指定したTODOキーワードを選択できるリストを作成するために、前置引数を解釈します。
g     (org-agenda-rodo)
 カレントのEmacsのセッションにおいて、すべてのOrg-modeのバッファを保存します。あわせてIDの場所も。C-x C-c
C-c
C-x C-c     (org-agenda-columns)

アジェンダバッファの中でカラムビュー(see カラムビュー)を作成します。カラムビューのフォーマットは、その時点のエントリーから作成され、あるいは(もしも、その時点でエントリーが存在しないなら)、アジェンダビューの最初のエントリーから作成されます。そのエントリーのためのフォーマットが何であれ、(プロパティから、#+COLUMNSという行から、あるいはorg-columns-default-format変数のデフォルトから作成された)オリジナルのバッファに存在しているエントリーのフォーマットがアジェンダで使用されます。

>

C-c C-x
>     (org-agenda-remove-restriction-lock)  もしもファイルまたはサブツリーをその時点で制限しているならば、アジェンダをロックする制限を取り除きます。 (see アジェンダファイル).
Secondary filtering and query editing

/     (org-agenda-filter-by-tag)
タグおよび(または)工数の見積りに対して、カレントのアジェンダビューにフィルターをかけます。これとカスタムなアジェンダコマンドとの間の差異は、このフィルターが非常に早いということです。このため、あなたは、アジェンダ(注1)を再表示することなく、異なるフィルターの間を素早く切り替えることができます。93

タグ選択の文字を入力しましょう。<SPC>はタグの全てを意味しています。入力部分で<TAB>を押すと、選択するタグの補完機能を使用できます(すべてのタグに選択用の文字が指定されているとはかぎりません)。そして、そのコマンドは、このタグを含んでいないか継承していないエントリーを全て隠します。前置引数をつけて呼び出した場合は、そのタグを持っているエントリーを削除さえしてしまいます。入力部で2番目の/はフィルターを終了し、隠されているエントリーを再度出現させます。もしも最初に入力したキーが、+または-ならば、前のフィルターは、選択された新たなタグの要求あるいは禁止に応じて、幅を狭くします。/の後に、+あるいは-を入力する代わりに、\ コマンドを即座に使用することもできます。

工数見積のフィルターをかけるために、予め認められている汎用的な工数を設定すべきです。例えば

          (setq org-global-properties
              '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))

あなたは、<>および=のひとつの操作を最初に入力することで、工数のためのフィルターをかけることができます。それから、あらかじめ認められた値のリストの中で、工数見積りのインデックスの数字を入力します。そこでは0は10番目の値を意味します。フィルターは選択された値よりも、以下、イコール、以上であるかによって限定されます。もしも0-9のキーがタグへのアクセスキーとして使用されていないならば、単純にあなたは操作コマンドを利用することなく、直接インデックスとなる数字を入力するだけです。この場合<が仮定されます。操作のアプリケーションのために、定義された工数がないエントリーでは、org-sort-agenda-noeffort-is-high変数の値に従って取り扱われます。工数の定義のないタスクにフィルターをかけるには、?を操作の値として入力します。

Org-modeはまた、コンテクストに対応したタグのフィルターを自動的にサポートしています。もしも、org-agenda-auto-exclude-function変数の値が、ユーザーが定義した機能に設定されているときは、その機能によって、どのようなタグがアジェンダから自動的に排除されるかを決定します。一度この機能が設定されると、それによって、/コマンドは、RET をサブのオプションキーとして受け付け、自動的に排除ロジックを走らせます。例えば、いってみれば、ネットワークへのアクセスを必要とするタスクを定義するためにNetというタグ、街での用事のためにErrandというタグ、電話を掛けなければならないときにCallというタグを使用しているとします。あなたは、インターネットを利用できるかどうか、仕事時間外にあるかどうか、このような状況に基づいて、これらのタグを自動的に排除することができるのです。

          (defun org-my-auto-exclude-function (tag)
            (and (cond
                  ((string= tag "Net")
                   (/= 0 (call-process "/sbin/ping" nil nil nil
                                       "-c1" "-q" "-t1" "mail.gnu.org")))
                  ((or (string= tag "Errand") (string= tag "Call"))
                   (let ((hour (nth 2 (decode-time))))
                     (or (< hour 8) (> hour 21)))))
                 (concat "-" tag)))
          
          (setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)


,org-agenda-filter-by-tag-refine     ()
追加の条件によってカレントのアジェンダフィルターをナローイングします。前置引数を用いてコマンドを呼び出したときは、まさにタグがついているエントリー、あるいは工数の基準にまさに合致するエントリーを削除する。/コマンドのあとの最初のキーとして、+あるいは-を押すことで同様の効果を達成することができる。


[ ] { }
in search view
新しい検索の単語([])、あるいは新しい正規表現({})をクエリ文字列に追加する。開いた角括弧/大括弧は、‘+’という接頭辞のついたポジティブな検索用語を追加する。この検索用語は、必ずそのエントリーに発生/合致しなければならないことを示す。閉じた角括弧/大括弧は、ネガティブな検索用語を追加し、それは、選択されているエントリーの中で、絶対に発生/合致しないということである。

Remote editing

0-9
Digit argument.
C-_     (org-agenda-undo)
 外部の編集コマンドでの変更を元に戻す。この変更はアジェンダバッファと外部のバッファの両方を元に戻す。
t     (org-agenda-todo)
 アイテムのTODOのステータスを変更する。アジェンダファイルでもオリジナルのOrgファイルでも有効である。
C-S-<right>     (org-agenda-todo-nextset)

C-S-<left>     (org-agenda-todo-previousset)
 次/前のTODOキーワードのセットへと切り替える。
C-k     (org-agenda-kill)
オリジナルのOrgファイルの中で、そのアイテムが属しているサブツリー全体と共に、カレントのアジェンダアイテムを削除する。もしも外部ファイルの削除するテキストが1行以上ならば、削除を行うには、ユーザーが指定する必要がある。org-agenda-confirm-kill変数を参照のこと。C-w
C-c
C-w     (org-agenda-refile)  その時点でそのエントリーを差し替える。C-a
C-c C-x
C-a or short a     (org-agenda-archive-default-with-confirmation)

org-archive-default-commandに設定されたデフォルトのアーカイブコマンドを使用して、その時点でエントリーに対応したサブツリーをアーカイブする。aキーを使用したときは、承認が必要である。C-x a

C-c
C-x a     (org-agenda-toggle-archive-tag)  カレントの見出しのためのARCHIVEタグをトグルする。C-x A
C-c
C-x A     (org-agenda-archive-to-archive-sibling)  カレントエントリーに対応したサブツリーを、アーカイブファイルに移動する。C-x C-s
C-c
C-x C-s or short $     (org-agenda-archive)  カレントの見出しに対応したサブツリーをアーカイブする。これは、設定されたアーカイブの場所に、多くの場合それは異なるファイルであるが、エントリーを移動することを意味している。
T     (org-agenda-show-tags)
カレントアイテムと関連づけられたすべてのタグを表示する。もしも、あなたたがorg-agenda-show-inherited-tags機能を停止しているにもかかわらず、依然として、たびたび見出しのすべてのタグを確認したいというときに役に立つ。
:     (org-agenda-set-tags)
 カレントの見出しにタグを設定する。もしもアジェンダの中にアクティブなリージョンがあるときは、そのリージョンの中ですべての見出し用としてタグを変更する。
,
カレントアイテムに優先順位を設定する。(org-agenda-priority) Org-modeは優先順位を表す文字を指示します。もしも、<SPC>を使って返答すると、優先順位のクッキーがそのエントリーから取り除かれる。
P     (org-agenda-show-priority)
 カレントアイテムの優先順位の重み付けを表示する。
+ or S-<up>     (org-agenda-priority-up)
 カレントアイテムの優先順位を高くする。優先順位はオリジナルのバッファで変更される。しかしアジェンダ上では並び替えの更新は行われない。このためには、rキーを使用する。
- or S-<down>     (org-agenda-priority-down)
 カレントアイテムの優先順位を低くする。
z or C-c C-z     (org-agenda-add-note)
そのエントリーにのノートを追加する。このノートは記録され、ノートが置かれている状態を変更した同じ場所にファイルされる。org-log-into-drawerによって、これは引き出しの中に入る。C-a
C-c
C-a     (org-attach)  すべてのコマンドの選択画面は、付属するものに関連づけられる。C-s
C-c
C-s     (org-agenda-schedule)  このアイテムを予約する。前置引数をつけると、予約のタイムスタンプが削除される。C-d
C-c
C-d     (org-agenda-deadline)  このアイテムにデッドラインを設定する。前置引数をつけるとデッドラインが削除される。
k     (org-agenda-action)
 カーソルの置かれた日付に選択されたアイテムの日付を設定するための、アジェンダのアクション。このコマンドはカレンダーでも動作する!コマンドは追加されたキーで入力する。
          m   その地点でアクションのためにエントリーにマークする。複数のエントリーに対しても可能である。
              Org-modeでは次を伴うC-c C-x C-k.
          d   その時点の日付でマークされたエントリーのデッドラインを設定する。
          s   その時点の日付でマークされたエントリーを予約する。
          r   デフォルトの日付としてカーソルの日付とともにorg-captureを呼び出す。

アジェンダを更新した後に、rを押すと、コマンドの効果を確認できる。

S-<right>     (org-agenda-do-date-later)
 カレント行に関連づけられたタイムスタンプを1日先に変更する。数値付きの前置引数をつけると、その数字の日数分だけ先に変更する。例えば、3 6 5 S-<right>と入力すると1年先に変更される。C-uという前置引数をつけると、1時間ずつ時間を変更する。もしもあなたが、同じコマンドを即座に繰り返したいときは、前置変数を付けなくても1時間単位で変化し続けるでしょう。二重のC-u C-uという前置引数をつけると、同様に分単位で変更される。オリジナルのOrg-modeファイルの中でタイムスタンプは変更されるが、その変更はアジェンダバッファには直接は反映されない。バッファを更新するには、rまたはgを使用する。
S-<left>     (org-agenda-do-date-earlier)
 カレント行のに関連づけられたタイムスタンプを1日過去に変更する。
>     (org-agenda-date-prompt)
 カレント行に関連づけられたタイムスタンプを変更する。>キーが選択される。というのは、私のキーボード上ではS-.と同じだからである。
I     (org-agenda-clock-in)
 カレントアイテムの時計をスタートする。もしもすでに時計が動いているのならば、まずそれが停止する。
O     (org-agenda-clock-out)
 すでにスタートした時計を停止する。
X     (org-agenda-clock-cancel)
 カレントで動いている時計をキャンセルする。
J     (org-agenda-clock-goto)
 別のウインドウの中の動いている時計にジャンプする。
Bulk remote editing selected entries

m     (org-agenda-bulk-mark)
 大量のアクションについて、その時点でエントリーにマークをつける。前置引数を付けると、多くの連続したエントリーにマークをつける。
U     (org-agenda-bulk-remove-all-marks)
 大量のアクションのマークを取り除く。
U     (org-agenda-bulk-remove-all-marks)
 大量のアクションのためにマークがつけられたエントリーのマークを取り除く。
B     (org-agenda-bulk-action)
 大量のアクション。アジェンダの中ですべてのマークをつかられたエントリーについて実行する。この機能では、適用されるアクションを選択するために、別のキーを入力する。Bに前置引数をつけると、sdのコマンドをパスして、これらの特別なタイムスタンプをまとめて取り除く。
          r  1つのリフィル上のターゲットに入力しすべてのエントリーを移動する。そのエントリーは
             アジェンダ上には表示されなくなる。再表示(g)によって再度表示される。
          $  選択されているエントリーをすべてアーカイブする。
          A  エントリーをアーカイブし、それぞれを所定のアーカイブ先に移動する。
          t  TODOの状態を変更する。これはTODOキーワード1文字を入力し、そして
             選択されたエントリーすべての状態を変更する。それはブロックしているのを無視し
             ログのノートを抑え込んで(タイムスタンプは別です)。
          +  選択されたエントリーのすべてにタグを付加する。
          -  選択されたエントリーのすべてから、タグのひとつを削除する。
          s  すべてのアイテムに新しい日付で予約する。すでに予約がついていれば、日数分だけ
             日付を更新する。入力欄でプラスを2つつけて何かの数字を最初に打つことで。
             例えば、‘++8d’とか‘++2w’のように。
          S  N日を指定して、それぞれをリスケジュールする。Nは入力欄で指定する。前置引数
             (C-u B S)をつけることで、平日のみに指定できる。
          d  指定した日をデッドラインとして設定する。

Calendar commands

c     (org-agenda-goto-calendar)
 Emacsのカレンダーを開き、アジェンダのカーソルの置かれている日付に移動します。
c     (org-calendar-goto-agenda)
 すでにカレンダーの中にあるときは、カーソルの置かれている日付で計算し、Org-modeのアジェンダを表示します。
i     (org-agenda-diary-entry)
カーソルの置かれている日付および(ブロックエントリーでは)マークされた日付を使って、新しいエントリーを日記に書き込みます。この機能ではEmacsの日記ファイル94に追加することになります。ある意味では、カレンダーのiコマンドと似た機能です。日記ファイルは別のウインドウにポップアップし、そこでエントリーを書き加えることができます。

もしもOrg-modeファイルにorg-agenda-diary-file を指定したならば、Org-modeではそのファイルの中に(Org-modeの構文を使って)日記の代わりに、エントリーを作成することができます。ほとんどのエントリーは、日付を元にしたアウトラインのツリーの中に記述されており、あとで過去の月/年の中から予定をアーカイブするのを簡単にします。そのツリーは、DATE_TREE属性か、最上位のエントリーとして、年という属性を持ったエントリーのもとに構築されています。Emacsでエントリーのテキストを入力するようプロンプトが表示されるでしょう。もしもあなたがそれを指示するならば、さらなる連携なく、org-agenda-diary-fileにそのエントリーを作成することになるでしょう。テキストを入力することなく、その入力欄で直接<RET>を入力したら、そのターゲットとなるファイルがその場でのエントリーを終了させ、別のウインドウが表示されるでしょう。k rコマンドを参照してください。

M     (org-agenda-phases-of-moon)
 その日を中心として3ヶ月間の月齢を表示する。
S     (org-agenda-sunrise-sunset)
 日の出と日の入りを表示する。地理上の場所によって、カレンダーの変数が設定される。Emacsのcalendarの章を参照のこと。
C     (org-agenda-convert-date)
 カーソルの置かれている日付によって、多くの他の文化的・歴史的なカレンダーに変換する。
H     (org-agenda-holidays)
 カーソルのある日付を中心に3ヶ月間の祝祭日を表示する。
M-x org-export-icalendar-combine-agenda-files
すべてのアジェンダファイルからエントリーを含んだiCalendar形式のファイルにエクスポートする。これはグローバルに利用できるコマンドで、そしてまたアジェンダメニューの中で利用できるコマンドです。
Exporting to a file

C-x C-w     (org-write-agenda)
アジェンダビューを1つのファイルに書き出します。選択したファイル名の拡張子に従って、そのビューは、HTML (拡張子が.htmlまたは.htm)、Postscript (拡張子.ps)、PDF (拡張子.pdf)、そしてプレーンテキスト(その他の拡張子)などにエクスポートされます。C-uという前置引数を用いてコマンドを呼び出したならば、即座に新しく作成されたファイルが開きます。エクスポートの間に使用されているps-printおよびhtmlizeのためのオプションを設定するために、org-agenda-exporter-settings変数を使用します。
Quit and
Exit  
q     (org-agenda-quit)
 アジェンダを終了し、アジェンダバッファを削除しますs。
x     (org-agenda-exit)
 アジェンダを終了し、アジェンダバッファとアジェンダを編集するためにEmacsで読み込まれたすべてのバッファを削除する。Org-modeファイルを読み込むためにユーザーによって作成されたバッファは削除されない。


Next: , Previous: アジェンダのコマンド, Up: アジェンダビュー

10.6 カスタムアジェンダビュー

カスタムアジェンダコマンドは2つの目的を提供する。ひとつはTODOとタグの検索を使用して、保存と素早く頻繁にアクセスするため。もうひとつは、特別に合成したアジェンダバッファを作成するため。カスタムなアジェンダコマンドはデフォルトのコマンドと同様に、コマンド選択画面ディスパッチャー(see アジェンダのコマンド選択)を通して利用できる。


Next: , Previous: カスタムアジェンダビュー, Up: カスタムアジェンダビュー

10.6.1 検索式の保存

カスタム検索の最初のアプリケーションは、よく使われる検索式のためのキーボードショートカットを定義することです。それはアジェンダバッファの作成、またはツリーの抽出(後者は言うまでもなくカレントバッファのみをカバーする)のどちらに対してでも。 カスタムコマンドは、org-agenda-custom-commands変数で設定されます。あなたはこの変数をカスタマイズできます。例えば、C-c a Cというように。またあなたは.emacsにEmacsのLispを記述して直接設定することもできます。以下に述べる例はすべての適正な検索タイプを含んでいます。

     (setq org-agenda-custom-commands
           '(("w" todo "WAITING")
             ("W" todo-tree "WAITING")
             ("u" tags "+boss-urgent")
             ("v" tags-todo "+boss-urgent")
             ("U" tags-tree "+boss-urgent")
             ("f" occur-tree "\\<FIXME\\>")
             ("h" . "HOME+Name tags searches") ; description for "h" prefix
             ("hl" tags "+home+Lisa")
             ("hp" tags "+home+Peter")
             ("hk" tags "+home+Kim")))

それぞれのエントリーの頭文字は、コマンドにアクセスするために、コマンド選択画面を呼び出すC-c aというコマンドの後に、入力しなければならないキーを定義します。通常、これは1文字をあてますが、もしもあなたが似たようなコマンドをたくさん持っていたら、あなたは2文字の組合せで定義することができます。その場合、いくつかの組合せでは最初の文字が同じものとなり、前置引数95.と同じように提供されます。2番目のパラメーターは検索の種類を示し、マッチさせるために使われる文字列や正規表現がそれに続きます。上の例ではそれゆえ以下のように定義します。

C-c a w
TODOのキーワードとして、‘WAITING’となっているTODOエントリーのためのグローバルな検索として。す。
C-c a W
同じような検索であるが、カレントバッファにのみ適用され、ツリーの抽出として検索結果を表示する。
C-c a u
:urgent:’ではなく‘:boss:’というタグがつけられた見出しのための、グローバルなタグ検索を行う。
C-c a v
C-c a uと同じ検索を行うが、TODOアイテムである見出しに対してのみ検索を行うという制限がある。
C-c a U
C-c a uと同じ検索を行うが、カレントバッファに対してのみ検索を行い、結果をツリーの抽出として表示する。
C-c a f
すべてのエントリーのうちで‘FIXME’という言葉を含んでいるものを検索してツリーの抽出を行う(くどいかもしれませんが、カレントバッファだけが対象です)。
C-c a h
HOMEというタグ検索のためのコマンドの前置引数として、そこでは、タグ検索の追加として、一つの名前(Lisa、Peter、またはKim)を選択するために、あなたはさらに(lp、またはk)というキーを追加入力する必要があります。


Next: , Previous: 検索式の保存, Up: カスタムアジェンダビュー

10.6.2 ブロックアジェンダ

もう一つの可能性とは、アジェンダビューの構築です。そのビューは、様々なコマンドの結果で構成されており、それぞれのコマンドはアジェンダバッファの中の1つのブロックを作成します。利用できるコマンドは(C-c a aを実行して作成された)一日または週間アジェンダのためのagenda、(C-c a tを実行して作成された)グローバルなtodoリストのためのalltodo、そして上で議論してきたtodotagstags-todoなどの検索コマンドに含まれています。2つの例を挙げます。

     (setq org-agenda-custom-commands
           '(("h" "Agenda and Home-related tasks"
              ((agenda "")
               (tags-todo "home")
               (tags "garden")))
             ("o" "Agenda and Office-related tasks"
              ((agenda "")
               (tags-todo "work")
               (tags "office")))))

これによって、家で精を出さなければならない用事に対するマルチブロックのビューを作成するために、C-c a hを定義します。アジェンダバッファには結果として、その週の、‘home’というタグが含まれているすべてのTODOアイテムと、‘garden’というタグがついたすべての行のためのアジェンダを含むことになります。最後に、C-c a oというコマンドで、同様に、オフィスの作業についてのビューを得ることができます。


Previous: ブロックアジェンダ, Up: カスタムアジェンダビュー

10.6.3 Setting options for custom commands

Org-modeはたくさんのアジェンダの構築や表示について調整する変数を含んでいます。グローバルな変数では、カスタムコマンドも含めて、アジェンダの全てのコマンドの動作を定義することができます。しかしながら、もしもあるひとつのカスタムビューについて、いくつかの設定を変更したいならば、それも可能です。オプションの設定は変数名のリストに書き込むことが必要で、org-agenda-custom-commandsの中に、正しい位置に値を書き込む必要があります。例えば。

     (setq org-agenda-custom-commands
           '(("w" todo "WAITING"
              ((org-agenda-sorting-strategy '(priority-down))
               (org-agenda-prefix-format "  Mixed: ")))
             ("U" tags-tree "+boss-urgent"
              ((org-show-following-heading nil)
               (org-show-hierarchy-above nil)))
             ("N" search ""
              ((org-agenda-files '("~org/notes.org"))
               (org-agenda-text-search-extra-files nil)))))

こう書き込むことによって、C-c a wというコマンドは、優先順位によってのみ収集したエントリーを並べ替えるでしょう。そのエントリーのカテゴリを設定する変わりに、例えば‘ Mixed: ’という文字をprefixの形で書くことで変更することができます。C-c a Uというタグでツリーを抽出するコマンドは、この結果、超コンパクトとなるでしょう。なぜならば、検索に合致した項目の上の階層の見出しも、合致した項目の見出しもどちらも表示されないからです。C-c a Nというコマンドは、1つのファイルに制限されたテキスト検索を実行します。

ブロックアジェンダを作成するコマンドセットのために、org-agenda-custom-commandsではオプションの設定用に2つの別の場所を用意しています。その設定の中にたったひとつのコマンドに有効なオプションを付け加えることも、その設定の中にすべてのコマンドに有効なオプションを付け加えることもできます。前者のオプションは1つのコマンドエントリーを付け加える。後者のオプションは、コマンドエントリーのリストを書き込むことが必要です。ブロックアジェンダの例に戻ると(see ブロックアジェンダ)、C-c a hというコマンドで、並べ替えの順序を優先順位の降順priority-downに変更することができますし、その中で「GARDEN」というタグのついたものについては反対の順序、すなわち優先順位の昇順priority-upに並べ替えることができるでしょう。このことは以下のように記述できます。

     (setq org-agenda-custom-commands
           '(("h" "Agenda and Home-related tasks"
              ((agenda)
               (tags-todo "home")
               (tags "garden"
                     ((org-agenda-sorting-strategy '(priority-up)))))
              ((org-agenda-sorting-strategy '(priority-down))))
             ("o" "Agenda and Office-related tasks"
              ((agenda)
               (tags-todo "work")
               (tags "office")))))

おわかりだと思いますが、変数とカッコで囲んでいる設定はやや複雑なところがあります。わかりにくいときは、カスタマイズのインターフェースとしてこの変数を設定してください。これはカスタマイズの構造を完全にサポートしています。注意しなければならないのは、このインターフェースでオプションを設定するときに、変数は、Lispによる表現をとっているということです。そのため、もしもその変数が1つの文字ならば、あなた自身でその変数の値に「”(ダブルクォート)」で囲む必要があるということです。


Next: , Previous: カスタムアジェンダビュー, Up: アジェンダビュー

10.7 アジェンダビューの出力

もしもあなたが自分のコンピュータから離れているときは、いくつかのアジェンダのバージョンを印刷して持ち歩くことは大変役に立ちます。Org-modeはカスタムアジェンダビューをプレーンなテキスト、HTML96、Postscript、PDF97、iCalenderファイルとしてエキスポートすることができます。もしも、ときどきこのようなことを実行するのならばコマンドを使用しましょう。

C-x C-w     (org-write-agenda)
アジェンダビューを1つのファイルに書き出します。選択したファイル名の拡張子により、そのビューはHTML(拡張子が.htmlまたは.htm)、Postscript(拡張子が.ps)、iCalendar(拡張子が.ics)、あるいはプレーンなテキスト(何かほかの拡張子)としてエクスポートされます。エクスポートの間に、ps-printのため、およびhtmlizeのためにオプションを設定するには、org-agenda-exporter-settings変数を使用します。例えば

          (setq org-agenda-exporter-settings
                '((ps-number-of-columns 2)
                  (ps-landscape-mode t)
                  (org-agenda-add-entry-text-maxlines 5)
                  (htmlize-output-type 'css)))

もしも、あなたがアジェンダビューをたびたびエクスポートする必要があるのならば、アウトプットのファイルの名前98のリストに、いくつかのカスタムなアジェンダのコマンドを関連づけることができます。ここに一つの例があります。最初のものはアジェンダとグローバルなTODOリストに対するカスタムなコマンドを定義しており、それらをエクスポートするたくさんのファイルと一緒になっています。それから2つのブロックアジェンダコマンドを定義し、同様にそれらのためのファイル名を指定しています。ファイル名は、現在作業しているディレクトリに対して相対パスにすることも絶対パスにすることもできます。

     (setq org-agenda-custom-commands
           '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
             ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
             ("h" "Agenda and Home-related tasks"
              ((agenda "")
               (tags-todo "home")
               (tags "garden"))
              nil
              ("~/views/home.html"))
             ("o" "Agenda and Office-related tasks"
              ((agenda)
               (tags-todo "work")
               (tags "office"))
              nil
              ("~/views/office.ps" "~/calendars/office.ics"))))

ファイル名の拡張子がエクスポートのタイプを決定します。もしも拡張子が.htmlならば、Org-modeはhtmlize.elパッケージを使用し、バッファをHTMLに変換し、そのファイル名で保存します。もしも拡張子が.psならば、ps-print-buffer-with-facesがPostscriptの出力をするために使用されます。もしも拡張子が.icsならば、iCalendarのエクスポートは、アジェンダを構成しているすべてのファイルにわたってエクスポートを実行し、現在アジェンダの中ではリスト化されたエントリーのエクスポートに限定されます。ほかの拡張子がついた場合は、プレーンなASCIIテキストファイルが作成されます。

エクスポートファイルは、非常に負荷が高いので、これらのコマンドの一つを相互に影響するように使用している時は、出力されません。そのかわり、1ステップですべての指定されたファイルを出力する特別なコマンドが用意されています。

e
C-c a
e     (org-store-agenda-views)  アジェンダに関連するエクスポートファイル名を持つすべてのアジェンダビューをエクスポートします。

あなたは、エクスポートコマンドのためのオプションの設定をするために。カスタムアジェンダコマンドのオプションのセクションを使用することができます。例えば、

     (setq org-agenda-custom-commands
           '(("X" agenda ""
              ((ps-number-of-columns 2)
               (ps-landscape-mode t)
               (org-agenda-prefix-format " [ ] ")
               (org-agenda-with-colors nil)
               (org-agenda-remove-tags t))
              ("theagenda.ps"))))

このコマンドは、Postscriptのエクスポートのために、2つのオプションを設定します。横長のフォーマットで2段のプリントを作成するためです。出力されたページは、2つにカットして、紙のアジェンダとして使えるようになります。もうひとつの設定は、行頭のカテゴリーとスケジューリング情報を省き、その代わりにチェックのついてないチェックボックスの項目となるようにアジェンダを修正します。私たちは各行をコンパクトに表示するためにタグを省略したり、白黒プリンタのためにカラーを使わない用にすることもできます。org-agenda-exporter-settingsの中で指定する設定もできますが、org-agenda-custom-commandsでの設定が優先します。

コマンドラインで次のような設定を使用することができます。

     emacs -f org-batch-store-agenda-views -kill

また、いくつかのパラメーター99を修正する必要があります。

     emacs -eval '(org-batch-store-agenda-views                      \
                   org-agenda-span month                             \
                   org-agenda-start-day "2007-11-01"                 \
                   org-agenda-include-diary nil                      \
                   org-agenda-files (quote ("~/org/project.org")))'  \
           -kill

どちらも~/org/project.orgのファイルを対象として、日記のエントリーは除かれ、30日以内に限定したアジェンダビューを作成します。

あなたは、他のプログラムで将来の進行過程を認める方法で、アジェンダの情報を絞り込むことができます。詳細はアジェンダ情報の抽出,のノートの情報を参照してください。


Previous: アジェンダビューの出力, Up: アジェンダビュー

10.8 Using column view in the agenda

カラムビュー(see カラムビュー)は、Org-modeファイルの階層構造の中に組み込まれている属性を見たり編集したりするために通常は使われます。エントリーがある評価基準で収集されているアジェンダから、カラムビューを使用することは大変便利です。

C-c C-x C-c     (org-agenda-columns)
 アジェンダの中でカラムビューに切り替えます。

この属性がどのようなものか理解するために、アジェンダのエントリーはもはや適切なアウトラインの環境ではなくなることを理解することが重要です。これによって以下のようなことが生じます。

  1. Org-modeでは、どのCOLUMNSのフォーマットを使用するか、決定する必要があります。アジェンダの中のエントリーは、異なるファイルから集められるということと、ファイルが異なるとCOLUMNSのフォーマットも異なるということから、このことは些細な問題であるとはいえないのです。Org-modeは最初に、org-overriding-columns-format変数がカレントで設定されているかどうか、またそこからフォーマットを取り出すことができるかどうかチェックします。一方、アジェンダの最初のアイテムに関連したフォーマットを使用するか、もしもそのアイテムが特別なフォーマット(属性もしくはファイルの中で定義された)を持たないならば、org-columns-default-formatを使用します。
  2. もしも、どれかカラムに要約形式(see カラム・アトリビュート)が定義されているならば、アジェンダでカラムビューに切り替えるときに、すべての関連するアジェンダファイルを確認して、この属性の計算の更新を確実に行います。このことは、特別なCLOCKSUMの属性が真であると設定されているということです。Org-modeはアジェンダの中で表示された値を合計するでしょう。一日/週間アジェンダの中で、合計は1日をカバーしています。他のビューでは、ブロック全体をカバーするのです。アジェンダでは同じエントリーを2度表示したり(例えばスケジュールと期限というように)、同じ階層(例えば)から2つのエントリーを表示したりするかもしれない、ということを理解することは重要なことです。これらの場合、アジェンダの中での要約は、いくつかの値が二重にカウントされるという間違った結果を導く可能性があります。
  3. アジェンダの中のカラムビューが、CLOCKSUMを表示するときは、このアイテムのためにいつでも時間計測全体に対応します。そのため1日/週間アジェンダにおいて、カラムビューでリスト化された時間合計は、カレントのビューの外側の時間から発生することになるかもしれません。この機能によって、あるタスクについて、計画された総工数を1つのカラムにリストにして、その値を比較することができるので、優位性を持ちます。この機能はアジェンダのカラムビューにおける重要なアプリケーションのひとつです。もしもあなたが表示されている期間の中の作業時間についての情報を得たいならば、clock table mode(Rをアジェンダの中で入力する)を使用してください。


Next: , Previous: アジェンダビュー, Up: Top

11 リッチエクスポートのためのマークアップ

Org-modeの文書をエクスポートする時,エクスポート機能は文書の構造をできるだけ正確に反映しようとします.HTMLやLaTeX,DocBook,その他のリッチフォーマット等のエクスポートの対象について,Org-modeは文書をリッチエクスポートに変換するルールを持ちます.このセクションはOrg-modeのバッファで使われるマークアップのルールについて説明します.


Next: , Previous: マークアップ, Up: マークアップ

11.1 構造化されたマークアップの要素


Next: , Previous: 構造化されたマークアップの要素, Up: 構造化されたマークアップの要素

ドキュメントタイトル

エクスポートされた文書のタイトルは専用の行で設定されます.

     #+TITLE: これは文書のタイトルです.

もしこの行が存在しなければ,タイトルはバッファ中の最初の空でない,コメントでない行を用います.もしまだ何も存在していない,またはあなたが最初の見出しより前のテキストをエクスポートをしないよう設定していたら,タイトルは拡張子無しのファイル名となります.

もしあなたがリージョンでマークしたサブツリーのみをエクスポートしているなら,サブツリーの見出しは文書のタイトルとなるでしょう.もしサブツリーがEXPORT_TITLEプロパティを持っているなら,そのプロパティの値が優先して用いられるでしょう.


Next: , Previous: ドキュメントタイトル, Up: 構造化されたマークアップの要素

見出しとセクション

ドキュメントの構造で説明されているような文書のアウトライン構造は エクスポートされた文書のセクションの定義の基準を形成しています.しかしながら,アウトライン構造はまた(例えば)タスクのリストとしても使われているので,最初の3アウトラインレベルのみ見出しとして使われます.

     #+OPTIONS: H:4


Next: , Previous: 見出しとセクション, Up: 構造化されたマークアップの要素

目次

目次は通常ファイルの最初の見出しの前に直接挿入されます.もしあなたが異なる場所に目次を挿入したいのなら,その場所に[TABLE-OF-CONTENTS]文字列を書いてください.目次の深さはデフォルトでは見出しのレベルの数と同じですが,org-export-with-toc変数を設定するか,ファイルに以下のように書くことによって,あなたはこれより小さな値に変更することも,目次を完全に表示させないようにすることも可能です.

     #+OPTIONS: toc:2          (目次に表示するレベルを2までとする)
     #+OPTIONS: toc:nil        (目次を表示しない)


Next: , Previous: 目次, Up: 構造化されたマークアップの要素

最初の見出しより前のテキスト

Org-modeは通常最初の見出しの前にテキストをエクスポートし,最初の行を文書のタイトルにします.テキストは完全にマークアップされているでしょう.もしあなたがHTMLやLaTeX,DocBookのような<リテラルを含めたい場合,独立したエクスポート機構のセクションで説明されている特別な構造を使います.

多くの人々は内部リンクの設定のためとそのために異なる方法でエクスポートされた最初の見出しの前のテキストを制御する最初の見出しの前に空白を使うことを好みます.あなたはorgexport-skip-text-before-1st-heading変数をtにすることで設定することができます.ファイル中に設定する場合,あなたは‘#+OPTIONS: skip:t’とすることで同等の設定を行うことができます.

もし,あなたがまだ最初の見出しの前にテキストを置きたいのであれば,#+TEXT構造を使います:

     #+OPTIONS: skip:t
     #+TEXT: このテキストは*最初の*見出しの前に置かれます
     #+TEXT: [TABLE-OF-CONTENTS]
     #+TEXT: このテキストは目次と最初の見出しの間に置かれます


Next: , Previous: 冒頭のテキスト, Up: 構造化されたマークアップの要素

リスト

エントリー中の階層構造で説明されているプレーンリストは,バックエンドのリストに変換されます.多くのバックケンドがサポートしているのは記号付きリスト,番号付きリスト,見出し付きリストです.


Next: , Previous: リスト, Up: 構造化されたマークアップの要素

段落,改行,引用

段落は最低1つの空白行で区切られます.もしあなたが強制的に段落の中で改行しないなら,‘\\’を行の末尾に書いてください.

リージョンで改行を保つためには,しかしそうでなければ通常のフォーマットが使われるなら,あなたはフォーマット技法として使われるこの構文を使うことができます.

     #+BEGIN_VERSE
      Great clouds overhead
      Tiny black birds rise and fall
      Snow covers Emacs
     
          -- AlexSchroeder
     #+END_VERSE

別の文書から一節を引用する時,段落の左右の余白を空けることが慣習となっています.あなたは以下を用いることで引用をOrg-modeの文書に含めることができます:

     #+BEGIN_QUOTE
     Everything should be made as simple as possible,
     but not any simpler -- Albert Einstein
     #+END_QUOTE

もしあなたがテキストを中央寄せにしたいなら,以下を使うことができます:

     #+BEGIN_CENTER
     Everything should be made as simple as possible, \\
     but not any simpler
     #+END_CENTER


Next: , Previous: パラグラフ, Up: 構造化されたマークアップの要素

フットノートのマークアップ

脚注は脚注で説明されたように定義されていて,全てのバックエンドにエクスポートされます.Org-modeは同じノートに対しての複数の参照と異なるバックエンドをサポートします.


Next: , Previous: フットノートのマークアップ, Up: 構造化されたマークアップの要素

強調と等幅

あなたは*bold*/italic/,_underlined_,=code=~verbatim~,そして必要なら‘+strile-through+’を単語に適用することができます.codeとverbatim文字列の中のテキストはOrg-modeの明確な構文ではありません; それはverbatimにエクスポートされます.


Next: , Previous: 強調と等幅, Up: 構造化されたマークアップの要素

水平線のルール

少なくとも5文字のダッシュ文字のみで行成される線は水平線(HTMLでは‘<hr/>’,LaTeXでは\hrule)にエクスポートされます.


Previous: 水平線のルール, Up: 構造化されたマークアップの要素

コメント行

行頭の文字が‘#’から始まる行はコメントとして扱われ,エクスポートされません.もしあなたがコメント行をインデントしたいのであれば,‘#+’から行を開始してください.‘COMMENT’ワードを持つサブツリーは,サブツリー全体がエクスポートされません.最後に,‘#+BEGIN_COMMENT’から‘END_COMMENT’で囲まれた範囲はエクスポートされません.

C-c ;
エントリー先頭のCOMMENTキーワードをトグルします.


Next: , Previous: 構造化されたマークアップの要素, Up: マークアップ

11.2 画像と表

Org-modeネイティブなテーブル(see テーブル)とtable.elパッケージを用いたテーブルの両方が適切にエクスポートされます.Org-modeの表では,最初の水平線の前の行が表のヘッダ行となります.あなたはキャプションと相互参照の指定を表の直前に,参照のための\ref{tab:basic-data}オブジェクトをテキストのどこかに書くことができます.

     #+CAPTION: これは次の表(またはリンク)のキャプションです
     #+LABEL:   tbl:basic-data
        | ... | ...|
        |-----|----|

多くのバックエンド(HTML,LaTeX,DocBook)はエクスポートされた文書の中に直接画像を挿入することができます.もし,例えば,[[./img/a.jpg]]のような説明部分を持たない画像ファイルへのリンクがあるなら,Org-modeは画像の挿入を行います.もしあなたが画像のキャプションや内部相互参照のラベルを定義したいなら,以下のように#+CAPTION#+LABELをリンクの前に書きます:

     #+CAPTION: これは次の画像(または表)のリンクのキャプションです.
     #+LABEL:   fig:SED-HR4049
     [[./img/a.jpg]]

あなたは画像に対する追加要素を定義するかもしれません.これはバックエンドの仕様なので,さらに情報が必要なら独立したバックエンドについてのセクションを見てください.

See 画像リンクの議論.


Next: , Previous: 画像とテーブル, Up: マークアップ

11.3 リテラルの例

あなたはマークアップに依存しないリテラルの例を含めることができます.そのような例に等幅のタイプセットがあり,それはソースコードやそれに似た例向きです.

     #+BEGIN_EXAMPLE
     テキストファイルからの例.
     #+END_EXAMPLE

そのようなブロックはインデントされたテキストをうまく整列させるためと,特にプレーンリスト構造(See エントリー中の階層構造.)のためにインデントされるでしょう.小さな例を使う時,それを簡単にするために,あなたはコロンとそれに続く空白からなる例の行を使うことができる.それらはコロンの前に空白を追加することもできます.

     ここに例を書きます
        : テキストファイルからの例

もし例がソースコードなら,もしくはEmacsでフォントロックによりマークアップされたテキストなら,あなたはEmacsバッファ100を要塞化するように要請することができます.あなたが例に色付けするために使うメジャーモードの名前を指定することが必要な時,‘src’ブロックを使います:

     #+BEGIN_SRC emacs-lisp
       (defun org-xor (a b)
          "Exclusive or."
          (if a (not b) b))
     #+END_SRC

examplesrcスニペットでは,あなたはBEGINの行の最後に-nを追加することで,例の行番号を表示することができます.もしあなたが+nとすると,前のスニペットから現在のものに番号が引き継がれます.リテラルの例で,Org-modeは‘(ref:name)’をラベルとして解釈し,[[(name)]]のような特別なリンクによりそこを参照することができます(i.e. 参照名は1つの括弧に囲まれています).HTMLでは,対応するコード行をマウスオーバーすると自動的にハイライト表示になり,少しクールです.

また,ソースコード101からラベルを消去するかどうかの切り替えのために-rを追加することもできます.-nで切り替えると,リンクされるそれらのリファレンスはコードリスティングの行番号によってラベルを付けられ,そうでなければ括弧無しのラベルにリンクされます.

     #+BEGIN_SRC emacs-lisp -n -r
     (save-excursion                  (ref:sc)
        (goto-char (point-min))       (ref:jump)
     #+END_SRC
     In line [[(sc)]] we remember the current position.  [[(jump)][Line (jump)]]
     jumps to point-min.

もし,ラベルの構文が言語の構文と衝突した場合,-lを使うことで‘#+BEGIN_SRC pascal -n -r -l "((%s))"’のようにフォーマットを変更できます.org-coderef-label-format変数を見てください.

HTMLはエクスポート時にテキストエリア,See HTMLエクスポートでのテキストエリア.とすることができます

C-c '
カーソル位置のソースコード例をそのネイティブモードで編集します.これはソースコードを一時バッファに表示し,切り替えることで働きます.あなたはC-c 'をもう一度押すことで編集を終了します102. 編集されたバージョンはOrg-modeバッファ上の古いバージョンを置き換えます.固定幅のリージョンは簡単にASCIIでイラストを書くためのartist-mode103を使うことで編集されます.空行でこのコマンドを使うことで,新しい固定幅のリージョンを作成します.
C-c l
C-c 'によって作成した一時バッファでのソースコード例の編集中にorg-store-linkの呼び出しはラベルを指示します.現在のバッファがユニークであることを確認し,現在の行の最後に‘(ref:label)’のように適切にフォーマットされたものが挿入されます.ラベルは‘(label)’のようなリンクを記憶し,C-c C-l検索する.


Next: , Previous: リテラルの例, Up: マークアップ

11.4 ファイルの挿入

エクスポート中,あなたは別のファイルの内容をインクルードすることができます.例えば,.emacsをインクルードするなら,あなたは次のようにします:

     #+INCLUDE: "~/.emacs" src emacs-lisp

2つ目のオプションは(e.g. ‘quote’や‘example’,‘src’)のようなマークアップで,3つ目はマークアップが‘src’ならコンテンツの言語を表します.マークアップはオプションです; もし与えられなければ,Org-modeフォーマットのテキストと仮定される.インクルードの行は最初の行とそれに続く行のプレフィクスの指定のための追加キーワードパラメーターの:prefix1:prefixを,Org-modeのコンテンツを指定したレベル下げるための:minilevelを,同様に選択したマークアップ固有のオプションを持ちます.例えば,ファイルをインクルードするには:

     #+INCLUDE: "~/snippets/xx" :prefix1 "   + " :prefix "     "

:lineパラメーターを使うことで,ファイルの指定した範囲の行のみをインクルードすることができます.範囲外の行はインクルードされません.範囲の開始と,または終了は明らかにデフォルトを使いません.

     #+INCLUDE: "~/.emacs" :lines "5-10"   Include lines 5 to 10, 10 excluded
     #+INCLUDE: "~/.emacs" :lines "-10"    Include lines 1 to 10, 10 excluded
     #+INCLUDE: "~/.emacs" :lines "10-"    Include lines from 10 to EOF
C-c '
ポイント位置のインクルードされたファイルに移動します.


Next: , Previous: ファイルの挿入, Up: マークアップ

11.5 エントリのインデックス

あなたは公開した文書のインデックスに用いるエントリーを規定することができます.これは#+INDEXから始まる行により設定します.感嘆符を含むエントリーはサブアイテムを作るでしょう.さらなる情報を見るにはインデックスの生成を参照してください.

     * Curriculum Vitae
     #+INDEX: CV
     #+INDEX: Application!CV


Next: , Previous: エントリのインデックス, Up: マークアップ

11.6 マクロ置換

あなたは次のようにしてテキストスニペットを定義することができます.

     #+MACRO: name   replacement text $1, $2 are arguments

これは {{{name(arg1,arg2)}}}と書くことでドキュメントのどこからも(コードの例からも)参照されます.マクロの定義に加えて,{{{title}}}{{{author}}}などは#+TITLE:#+AUTHOR:や他の似たような行によりセットされる情報を参照します.また,{{{date(FORMAT)}}}{{{modification-time(FORMAT)}}}は現在の日付とファイルがエクスポートされて変更された時刻をそれぞれ参照します.FORMATformat-time-stringで認識した文字列をフォーマットします.

マクロ展開はエクスポート中に行われ,一部の人々は複雑なHTMLコードの構築に用いる.


Previous: マクロ置換, Up: マークアップ

11.7 Embedded LaTeX

プレーンなASCIIはほとんどの場合ノートをとるのに十分です.例外は数学の記号や時々出てくる数式を必要とする科学に関するノートのようなものです.LaTeX104は科学に関する文書の組版に広く使われています.多くのacademicsはLaTeXのソースコードの読み書きに使われていて,すぐに多くのエクスポートバックエンドに対応できるため,Org-modeはLaTeXコードのファイルへの組込みをサポートしています.


Next: , Previous: LaTeXの組み込み, Up: LaTeXの組み込み

11.7.1 特殊記号

あなたはLaTeXマクロをギリシャ文字を表す‘\alpha’や矢印を表す‘\to’のような特殊記号の挿入に使うことができます.これらのマクロは補完が可能で,‘\’まで入力し,その後に何文字か入力してM-<TAB>を押すことで補完が可能です.LaTeXのコードとは違い,Org-modeは数学の区切り文字を囲まないようなマクロも使うことができます.以下に例を挙げます:

     Angles are written as Geek letters \alpha, \beta and \gamma.

エクスポート時,これらのシンボルはエクスポート先のネイティブフォーマットに変換されます.HTMLでは\alphaのような文字列は&alpha;にエクスポートされ,LaTeXでは$\alpha$となります.同様に,\nbspはHTMLでは&nbsp;に,LaTeXでは~となります.もしあなたが記号を単語の中に含めたいのであれば,次のようにします: ‘\Aacute{}stor’.

非常に多くのエンティティが提供されていて,HTMLとLaTeXからその名前を引き継いでいます;完全なリストはorg-entities変数を見てください.‘\-’はシャイなハイフンとして扱われていて,‘--’や‘---’,‘...’は異なる長さのハイフンかドットの集合を作成するための全て特殊コマンドに変換されます.

もしあなたがUTF-8文字でエンティティを表示したいのなら,以下のコマンド105:

C-c C-x \
エンティティのUTF-8での表示をトグルします.これはバッファの内容を変更せず,UTF-8の文字を表示するためにオーバレイを用いています.


Next: , Previous: 特殊記号, Up: LaTeXの組み込み

11.7.2 下付き文字と上付き文字

LaTeXと同じように,‘^’と‘_’が下付き文字と上付き文字を示しています.さらに,それらはmath-modeにの区切り文字に組込まずに使うことができます.ASCIIテキストの可読性の向上のため,複数文字の下付き文字と上付き文字を波括弧で囲む必要はありません(囲んでもかまいませんが).例

     The mass of the sun is M_sun = 1.989 x 10^30 kg.  The radius of
     the sun is R_{sun} = 6.96 x 10^8 m.

上付きテキスト,下付きテキストの説明を避けるため,あなたはバックスラッシュをつけた‘^’と‘_’を引用できます: ‘\^’と‘\_’です.異なる文脈でしばしば使われるアンダーラインのテキストを書くなら,常にこれらの下付き文字として解釈するOrg-modeの慣習はあなたのやり方で得ることができます.この慣習を変更するにはorg-export-with-sb-superscripts変数を設定するか,ファイルに次のように書いてください.

     #+OPTIONS: ^:{}

この設定を有効にした場合,‘a_b’は下付き文字として解釈されず,‘a_{b}’とすることで解釈されます.

C-c C-x \
さらにUTF-8のエンティティを見るため,このコマンドは下付き文字と上付き文字をWYSISYMで形成する.


Next: , Previous: 下付き文字と上付き文字, Up: LaTeXの組み込み

11.7.3 LaTeXの断片的なコード

シンボルと上付き,下付き,完全な式を越えることが必要です.Org-modeはLaTeXの数式を含むことができ,各エクスポート先への変換もサポートしています.LaTeXにエクスポートするとき,コードは明らかに残っています.HTMLへエクスポートするとき,Org-modeは数式106の処理と描画のためにMathJax library (see HTMLエクスポートでの数式フォーマット)を呼び出します.最後に,数式表現はブラウザかDocBook文書で描画可能な画像107へと処理されます.

LaTeXのコード片は,特別なマークは全く必要ありません.以下のコード片はLaTeXのソースコードとして知られています:

例:

     \begin{equation}                          % arbitrary environments,
     x=\sqrt{b}                                % even tables, figures
     \end{equation}                            % etc
     
     If $a^2=b$ and \( b=2 \), then the solution must be
     either $$ a=+\sqrt{2} $$ or \[ a=-\sqrt{2} \].

もしあなたが他の目的にASCIIの区切り文字が必要なら,LaTeXコンバータに邪魔されえることを望まない文字を除外するためにorg-format-latex-optionsオプションを設定することができます.

LaTeXの処理はorg-export-with-LaTeX-fragments変数を設定することができます.デフォルトの設定はtで,HTMLにはMathJaxを用い,DocBookとASCII,LaTeXでは処理しません.あなたはこの変数をファイルの冒頭部分に書くことで設定することもできます:

     #+OPTIONS: LaTeX:t          Do the right thing automatically (MathJax)
     #+OPTIONS: LaTeX:dvipng     Force using dvipng images
     #+OPTIONS: LaTeX:nil        Do not process LaTeX fragments at all
     #+OPTIONS: LaTeX:verbatim   Verbatim export, for jsMath or so


Next: , Previous: LaTeXのコード片, Up: LaTeXの組み込み

11.7.4 LaTeXコード片のプレビュー

もしあなたがdvipngをインストールしているのであれば,LaTeXのコード片は出力された組版において画像として処理されます:

C-c C-x C-l
ポイント位置のLaTeXコード片の画像プレビューの提供とソースコード上のオーバレイ.もしポイント位置にコード片がないのであれば,現在のエントリ(2つの見出しの間)の全てのコード片を処理します.前置引数を付けて呼ばれた時は,サブツリー全体を処理します.前置引数を2つ付けて呼ばれた時,またはカーソルが最初の見出しの前にある時は,バッファ全体を処理します.
C-c C-c
オーバレイされたプレビュー画像を消去します.

プレビューの外観を変更するために,あなたはorg-format-latex-optins変数をカスタマイズすることができます.とりわけ,:scale(そしてHTMLへのエクスポートでは:html-scale)プロパティは画像のプレビューサイズの調整に使われます.


Previous: LaTeXコード片のプレビュー, Up: LaTeXの組み込み

11.7.5 CDLaTeXを数学の入力に使う

CDLaTeXモードは環境や数学テンプレートの挿入をスピードアップするためにAUCTeXに似たメジャーモードであるLaTeXモードと併用して通常使われるマイナーモードです.Org-modeでは,あなたはCDLaTeXモードのいくつかの機能を使用できます.あなたはhttp://www.astro.uva.nl/~dominik/Tools/cdlatexからcdlatex.eltexmathp.el(最近AUCTeXに追加されました)をインストールする必要があります.Org-mode中ではCDLaTeXモード自身は使わないでください,代わりにOrg-modeに一部である,より軽量なバージョンのorg-cdlatex-modeを使ってください.M-x org-cdlatex-modeをカレントバッファで実行して有効にするか,全てのOrg-modeファイルで有効するために次の設定を行います:

     (add-hook 'org-mode-hook 'turn-on-org-cdlatex)

このモードが有効である時,以下の機能が提供されます(詳細はCDLaTeXモードのドキュメントを参照してください)::


Next: , Previous: マークアップ, Up: Top

12 エクスポート

org-modeのドキュメントは様々なフォーマットにエクスポートすることができます。ノートを共有し印刷するには ASCII形式でエクスポートすることでOrgファイルの読みやすく、シンプルなものが得られます。 HTMLのエクスポートではノートをウェブに公開できるようになりますし, XOXOフォーマットは他の様々なアプリケーションでやりとりするうえで確かな基礎となります。 LaTeX のエクスポートでは、org-modeとその構造化された編集機能を使って、容易に LaTeX のファイルを出力することができます。DocBookのエクスポートでは、OrgファイルをDocBookのツールを使った様々なフォーマットに変換することが可能です。プロジェクトの管理では、TaskJuggler形式のエクスポートを使って、ガントリソースチャートを作成することができます。デッドラインや予約のような時間と関連のあるエントリーをiCalのようなデスクトップカレンダーに取り込むために org-modeはiCalendar形式で抽出することもできます。現在、Org-modeはエクスポートのみをサポートしており、他の異なるフォーマットからインポートすることはできません。

org-modeは、 transient-mark-mode がオンの時(Emacs 23ではデフォルト)、は選択したリージョンをエクスポートをすることができます。


Next: , Previous: エクスポート, Up: エクスポート

12.1 選択エクスポート

エクスポートしたいドキュメントのある部分を選択、または除外する時にタグを使うことができます。 その挙動は、 org-export-select-tagsorg-export-exclude-tags の二つの変数により決まります。

org-modeはまず始めに select タグがバッファにないかチェックします。 あった場合は, タグがない全てのツリーは除外されます。もし選択したツリーがサブツリーだった場合、それより上の階層はエクスポートされるものとして選択されますが, それより下の階層は選択されません。

もし、選択されたタグがなかった場合, バッファにある全ての内容がエクスポートされるものとして選択されるでしょう。

最後に, exclude タグでマークされていない全てのサブツリーはエクスポートバッファから除かれるでしょう。


Next: , Previous: 選択エクスポート, Up: エクスポート

12.2 エクスポートオプション

エクスポートする際にはバッファにある特別な行が読みこまれます。 その行には追加的な情報が含まれており、ファイルの中でどこにでも書くことができます。 C-c C-e t と入力することで、バッファにそのような行をセットで挿入することができます。それぞれの行で ‘#+’ と入力した後に M-<TAB> による補完を行ない、 (see 補完) キーワードが正しいか、確認してみると良いでしょう。エクスポートと関連のない、バッファ内の設定の概要については バッファ内での変数制御 を参照してください。特に、 #+SETUPFILE を使うことによって含めることができる別のファイルの中でよく使われる(エクスポートの)オプションを指定できることに注意してください

C-c C-e t     (org-insert-export-options-template)
エクスポートオプションのテンプレートを挿入します。下の例を見てください。

     #+TITLE:       表示されるタイトル (デフォルトはバッファ名)
     #+AUTHOR:      著者 (デフォルトは user-full-name の値)
     #+DATE:         format-time-string で解釈される固定された日付の文字列
     #+EMAIL:       彼/彼女のメールアドレス(デフォルトは user-mail-address の値)
     #+DESCRIPTION: ページの説明, e.g. XHTMLのメタタグで使われる。
     #+KEYWORDS:    ページのキーワード, e.g. XHTMLのメタタグで使われる。
     #+LANGUAGE:    HTMLで指定される言語 e.g. ‘en’ (org-export-default-language)
     #+TEXT:        冒頭に挿入される説明的な文章
     #+TEXT:        複数の行に書くことができます。
     #+OPTIONS:     H:2 num:t toc:t \n:nil @:t ::t |:t ^:t f:t TeX:t ...
     #+BIND:        lisp-var lisp-val, e.g.: org-export-latex-low-levels itemize
                    これらを確認するか, org-export-allow-BIND を設定すること
     #+LINK_UP:     出力したページにおける ``up'' のリンク先
     #+LINK_HOME:   出力したページにおける ``home'' のリンク先
     #+LATEX_HEADER: LaTeXのヘッダーで使われる \usepackage{xyz} のような余分な行
     #+EXPORT_SELECT_TAGS:   エクスポートするツリーを示すタグ
     #+EXPORT_EXCLUDE_TAGS:  エクスポートから除外するツリーを示すタグ
     #+XSLT:        FOファイルを生成するのにDocBookのエクスポート機能が使うXSLTのスタイルシート

OPTIONS行は 以下のようなエクスポートの設定を示すコンパクトな式です。 110

     H:         エクスポートする見出しの階層数
     num:       セクション番号の有無
     toc:       目次の有無, または階層数の上限 (整数)
     \n:        改行を維持するかどうか (うまく動作しない)
     @:         HTMLの引用タグの有無
     ::         固定幅の段落の有無
     |:         表の有無
     ^:         上付き、下付き文字を示す TeX のようなシンタックスの有無
                 "^:{}" は a_{b} 解釈されるが、
                簡潔な a_b はそのままとなるでしょう。
     -:         特別な文字列を変換するかどうか
     f:         this[1] のような脚注を用いるかどうか
     todo:      TODOキーワードを出力した文字列に含めるかどうか
     pri:       クッキーを優先するかどうか
     tags:      タグの有無, not-in-toc となるかもしれません。
     <:         DEADLINESのような時間/日付の有無
     *:         強調テキストの有無(太字, イタリック, アンダーライン)
     TeX:       テキスト中のシンプルな TeX マクロの有無 
     LaTeX:      LaTeX 出力の設定  デフォルトは auto
     skip:      最初見出しの前にある文章をスキップするかどうか
     author:    著者の名前/e-mailを出力するかどうか
     email:     著者のe-mailを出力するかどうか
     creator:   作者を出力するかどうか
     timestamp: 作成した日付を出力するかどうか
     d:         drawerを出力するかどうか

これらのオプションはHTML、 LaTeX の両方のエクスポートに影響します。 TeXLaTeX のオプションを除き LaTeX のエクスポートをするのに、それぞれ t 、または nil となります。

org-export-html-pre/postamblet とするとHTMLにエクスポートする時に authoremail 及び creator の値は上書きされるでしょう。 代わりに org-export-html-pre/postamble-format が用いられます。

このようなオプションの初期値は変数のセットで与えられます。 そのような変数は、OPTIONSのキーと公開するキーにも対応しています。 (see プロジェクトのリスト), org-export-plist-vars の定数を見てください。

エクスポートのコマンドを呼びだす前に、 C-c @ で選択した単一のサブツリーをエクスポートする時、そのサブツリーは、 EXPORT_FILE_NAMEEXPORT_TITLEEXPORT_TEXTEXPORT_AUTHOREXPORT_DATE 、 そして EXPORT_OPTIONS プロパティでエクスポートの設定を無視することができます。


Next: , Previous: エクスポートオプション, Up: エクスポート

12.3 エクスポート用コマンド選択画面

全てのエクスポートコマンドはエクスポートコマンド選択画面から選ぶことができます。 コマンド選択画面では、コマンドを特定するための追加的なキーの入力を促されます。通常、ファイルの全ての内容がエクスポートされますが、もしアクティブなリージョンに一つのアウトラインツリーが含まれていた場合, まず、見出しがドキュメントのタイトルとして扱われ、サブツリーがエクスポートされます。

C-c C-e     (org-export)
エクスポート、または公開のコマンド選択画面です。エクスポート、または公開のコマンドを起動するのに必要なキーがヘルプウィンドウに表示されます。 前置引数として、入力すると、直接エクスポート機能となります。二重の前置引数 C-u C-u を入力することで、コマンドは別のEmacsプロセスにおいてバックグラウンドで実行されます。111. v
C-c C-e
v     (org-export-visible) C-c C-e のように動作しますが、 今見えている文章だけがエクスポートされます。 (i.e. アウトライン表示により、隠されていない文章).
C-u C-u C-c C-e     (org-export)
エクスポート機能が呼ばれますが、 org-export-run-in-background の設定と逆の挙動となります。 i.e. 動いていないバックグラウンドプロセスを呼びだしたり, 現在のEmacsのプロセスで強制的に実行したりします。


Next: , Previous: エクスポート用コマンド選択画面, Up: エクスポート

12.4 ASCII/Latin-1/UTF-8エクスポート

ASCII形式へのエクスポートは、org-modeのファイルをASCIIのみが含まれる、シンプルで読みやすい形に書き出します。Latin-1及びUTF-8でのエクスポートでは特殊な文字やシンボルをそれらのエンコードで出力します。

C-c C-e a     (org-export-as-ascii)
ASCII形式のファイルをエクスポートします。 Orgファイルを myfile.org だとすると、ASCII形式のファイルは myfile.txt となるでしょう。 そのファイルは警告なしに上書きされます。もしアクティブなリージョン 112 があった場合, そのリージョンのみがエクスポートされます。 選択したリージョンが一つのツリー 113を含んでいた場合、そのツリーの見出しがドキュメントのタイトルとなるでしょう. 見出しがあるか、または EXPORT_FILE_NAME プロパティを継承していた場合、 エクスポートする際にはその名前が使われるでしょう。
C-c C-e A     (org-export-as-ascii-to-buffer)
一時的なバッファに出力し、ファイルを作成しません。
C-c C-e n     (org-export-as-latin1)
N
C-c C-e
N     (org-export-as-latin1-to-buffer) 上に示したコマンドのような動作をしますが, Latin-1でエンコーディングされたものが出力されます。
C-c C-e u     (org-export-as-utf8)
C-c C-e U     (org-export-as-utf8-to-buffer)
上に示したコマンドのような動作をしますが, UTF-8でエンコーディングされたものが出力されます。
C-c C-e v a/n/u
文書の中で、バッファで表示されている部分だけを出力する。

エクスポートされたものでは、 最初の3つのアウトラインの階層が一般的な文書の構造と見なされて、見出しとなります。 それ以外の階層はアイテムのリストとしてエクスポートされます。 この違いを異なる階層に変えたい場合は、 前置引数で、その階層を指定します。 例えば、

     C-1 C-c C-e a

は 最初の階層のみを見出しとし、それ以外はアイテムとなります。見出しがアイテムに変更された時、 見出し後の文章のインデントは、アイテムの下にうまく調和するように変更されます。 この変更は、最初の本文が全体のインデントを示しているという仮定のもとで実行されます。これよりも大きなインデントは、最初の文章との相対的なレイアウトを維持するように調整されます。最初の行より少ないインデントであれば, 左寄せします。

次の見出しの前にあるリンクは脚注のような形でエクスポートされます。その脚注は、次の見出しの前に項目名とリンクがエクスポートされます。詳しい内容と他のオプションについては、変数 org-export-ascii-links-to-notes を見てください。


Next: , Previous: ASCII/Latin-1/UTF-8エクスポート, Up: エクスポート

12.5 HTMLのエクスポート

org-modeには多くのHTMLのフォーマットに対応したHTML (XHTML 1.0 準拠)エクスポート機能があります。それは、John Gruberが開発した markdown 言語に似ていますが、org-modeではさらにテーブルもサポートしています。


Next: , Previous: HTMLのエクスポート, Up: HTMLのエクスポート

12.5.1 HTMLエクスポートのコマンド

C-c C-e h     (org-export-as-html)
HTMLファイルmyfile.htmlをエクスポートします。Orgファイルmyfile.orgをエクスポートすると、ASCII形式のファイルはmyfile.htmlとなるでしょう。 そのファイルは警告なしに上書きされます。もしアクティブなリージョン 114 があった場合, そのリージョンのみがエクスポートされます。 選択したリージョンが一つのツリー 115を含んでいた場合、そのツリーの見出しがドキュメントのタイトルとなるでしょう. 見出しがあるか、または EXPORT_FILE_NAME プロパティを継承していた場合、 エクスポートする際にはその名前が使われるでしょう。C-e b
C-c
C-e b     (org-export-as-html-and-open) HTMLファイルをエクスポートし、そのファイルをブラウザで開きます。
C-c C-e H     (org-export-as-html-to-buffer)
一時的なバッファに出力し、ファイルを作成しません。
C-c C-e R     (org-export-region-as-html)
アクティブなリージョンを一時的なバッファに出力します。前置引数があるとヘッダーとフッターを出力せずに、リージョンのHTMLのみを出力します。これはカットアンドペーストで編集する際に便利です。
C-c C-e v h/b/H/R
文書の中で、バッファで表示されている部分だけを出力する。
M-x org-export-region-as-html
org-modeの記法が使われているという前提でリージョンをHTMLに変換します。これはどのバッファでも起動するグローバルなコマンドです。
M-x org-replace-region-by-HTML
org-modeの記法が使われているという前提でアクティブなリージョンをHTMLに変換します。

エクスポートされたものでは、 最初の3つのアウトラインの階層が一般的な文書の構造と見なされて、見出しとなります。 それ以外の階層はアイテムのリストとしてエクスポートされます。 この違いを異なる階層に変えたい場合は、 前置引数で、その階層を指定します。 例えば、

     C-2 C-c C-e b

この場合2番目のレベルまでを見出しとして取り扱い、それ以外は項目として取り扱います。


Next: , Previous: HTMLエクスポートコマンド, Up: HTMLのエクスポート

12.5.2 HTMLタグの引用符

HTMLにエクスポートする際、プレーンな‘<’ and ‘>’は常に ‘&lt;’と‘&gt;’に変換されます。もし単純なHTMLタグをそのまま含めたい時は, ‘@<b>bold text@</b>’のようにma‘@’でマークします。これは単純なHTMLタグでしか動作しませんので注意してください。 エクスポートするファイルにさらに広範囲なHTMLをそのままコピーするには次のようなブロックが使えます。

     #+HTML: エクスポートするHTMLコード

or

     マーカー間の全ての行は文字どおり出力されます。


Next: , Previous: HTMLタグの引用符, Up: HTMLのエクスポート

12.5.3 HTMLエクスポートでのリンク

内部リンク(see 内部リンク) エクスポートされHTMLでも同様に動作します。これには、ラジオターゲット(see ラジオターゲット)により生成された自動リンクも含まれます。もしターゲットとなるファイルが公開されるOrgファイルを示す同じ相対パス上にあっても、リンクは外部リンクとして動作するでしょう。他の.orgファイルへのリンクは、HTMLにエクスポートされたものにも同じ相対パスでリンクされたファイルがある、という前提で、リンクに変換されます。 ‘id:’リンクはファイル間で特定のエントリーにジャンプするのに使われます。リンクするファイル、公開ディレクトリでの公開に関する情報については、ファイルリンク付きの公開参照してください。

リンクの属性を記述したい時は、特別な#+ATTR_HTML行を用いることができます。 この行は、<a>タグや<img>タグを追加する属性を定義するために使われます。以下の例では、リンクにtitlestyleの属性を設定しています。

     #+ATTR_HTML: title="The Org-mode homepage" style="color:red;"
     [[http://orgmode.org]]


Next: , Previous: HTMLエクスポートでのリンク, Up: HTMLのエクスポート

12.5.4 テーブル

org-modeの表は、org-export-html-table-tagで定義されているテーブルのタグを使ってHTMLにエクスポートされます。 デフォルトの設定では、セルの罫線とフレームがない状態でテーブルが出力されます。 個々のテーブルでその設定を変えたい場合は, 次のような行をテーブルの前に記述してください。

     #+CAPTION: これはセルの周囲に線が引かれた表です。
     #+ATTR_HTML: border="2" rules="all" frame="all"


Next: , Previous: HTMLエクスポートでのテーブル, Up: HTMLのエクスポート

12.5.5 HTMLエクスポートでの画像

HTMLのエクスポートではOrgファイルにリンクがある画像をインライン表示することができます。 その画像はリンクされているクリック可能な部分として扱われます。 デフォルトでは、116, リンクにdescriptionがなければ、画像はインライン表示されます。 つまり、 ‘[[file:myimg.jpg]]’はインライン表示されますが、‘[[file:myimg.jpg][the image]]’はが画像にリンクされる‘the image’というテキストリンクが作られます。 descriptionの部分がfile:リンクか画像を示すhttp:のURLの場合, 画像はインラインに表示され、画像がクリックされると活性化されます。例えば、リンク先に高解像度の画像があるサムネイルを追加したい場合、次のように書くと良いでしょう。

     [[file:highres.jpg][file:thumb.jpg]]

インライン画像に属性を追加したい場合は、#+ATTR_HTMLを使います。 次の例では、テキストでの見やすさとアクセスのしやすさを考慮してalt属性とtitle属性を指定して、alignを右にしています。

     #+CAPTION: A black cat stalking a spider
     #+ATTR_HTML: alt="cat/spider image" title="Action!" align="right"
     [[./img/a.jpg]]

httpのアドレスも使うことができます。


Next: , Previous: HTMLエクスポートでの画像, Up: HTMLのエクスポート

12.5.6 HTMLエクスポートでの数式フォーマット

LaTeXの数学用スニペット(see LaTeXのコード片)は二つの異なる方法でHTMLに表示される。デフォルトではorg-modeをインストールすると、すぐにMathJax systemが使えるようになっています。 http://orgmode.orgMathJaxがOrg-modeユーザー、小さなアプリケーション、そしてテストにとって便利だと考えているからです。 もし特定のページで、あるいは常にMathJaxを使うのであれば、私達のサーバでの読みこみを減らすためにMathJaxをあなたのサーバにインストール117 してください。 MathJaxについて設定するには、org-export-html-mathjax-optionsを使うか、バッファに次のような行を挿入してください。

     #+MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"

この行の各パラメーターの意味の知るために,ドキュメント文字列の変数org-export-html-mathjax-optionsを見てください.

望むのであれば、LaTeXを小さな画像に変換してブラウザ上のページに挿入することもできます。MathJaxが有用である前には、これがorg-modeでのデフォルトの方法でした。この方法を用いるには、あなたのシステムでdvipngプログラムが利用できる状態である必要があります。この方法は以下のような行を追加することでも有効になります。

     #+OPTIONS: LaTeX:dvipng


Next: , Previous: HTMLエクスポートでの数式フォーマット, Up: HTMLのエクスポート

12.5.7 HTMLエクスポートでのテキストエリア

コードサンプルをHTMLにして公開する方法として、テキストエリアを使う方法があります。何かのアプリケーションに貼りつける前であれば、そのコードサンプルは編集することができます。exampleブロックかsrcブロックに-tスイッチが付加されることでテキストエリアに変換されます。 このスイッチを使うことで、シンタックス、ラベルのハイライト、行番号に関するオプションが無効になります。 -h-wを使うことがあるかもしれません。それらのスイッチはテキストエリアの高さと幅を特定するもので、デフォルトでは高さがexampleブロックの行数で幅は80となります。設定は、例えば以下のようになります。

     #+BEGIN_EXAMPLE -t -w 40
       (defun org-xor (a b)
          "Exclusive or."
          (if a (not b) b))
     #+END_EXAMPLE


Next: , Previous: HTMLエクスポートでのテキストエリア, Up: HTMLのエクスポート

12.5.8 CSSサポート

エクスポートするファイルには、スタイルに関する情報を含めることができます。HTMLエクスポート機能には、文章のパーツを適切に表示するために次に示す特別なCSSクラス118があります。見出しやテーブルなどの標準的なクラスに加えて、それら特別なCSSクラスも変更することができます。

     p.author            著者の情報、email含む
     p.date              公開日
     p.creator           作成情報, org-modeのバージョン
     .title              文章のタイトル
     .todo               DONEとなっていないTODOキーワード
     .done               DONEキーワード、DONEと扱われる全てのキーワードが対象
     .WAITING            各TODOキーワードはその名前のクラス名も用いることができる
     .timestamp          タイムスタンプ
     .timestamp-kwd      SCHEDULED等のタイムスタンプに関連するキーワード
     .timestamp-wrapper  SCHEDULED等のキーワードとタイムスタンプ全体
     .tag                見出し中のタグ
     ._HOME              各タグはその名前のクラス名も用いることができる("@"は"_"に置き換えられる)
     .target             リンクのターゲット
     .linenr             コード中の行番号
     .code-highlighted   参照されコード行のハイライト
     div.outline-N       深さレベルNのdiv要素(見出しとテキスト)
     div.outline-text-N  深さレベルNのテキスト部分のdiv要素
     .section-number-N   深さレベルNの見出しの番号。各レベルで異なる
     div.figure          インライン画像のフォーマット方法
     pre.src             ソースコードブロックのフォーマット方法
     pre.example         例示ブロック
     p.verse             verseブロック
     div.footnotes       脚注の見出し
     p.footnote          脚注定義の文章、脚注を含む
     .footref            脚注の参照番号(常に<sup>となる)
     .footnum            脚注定義中の番号(常に<sup>となる)

エクスポートされたファイルは、基礎的な方法で定義されたコンパクトなスタイル119が含まれています。この設定は上書きされるかもしれませんし、 org-export-html-style (Org-wideの設定に使われます)やorg-export-html-style-extra (ファイルごとの設定のような詳細な設定に使われます。)を使って追加されるかもしれません。後者の変数をファイルごとに設定するには、次のように行ないます。

     #+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />

長いスタイルの定義には複数行で記述することもできます。外部ファイルを参照せずに<style> </style>セクションに直接記述してください。

サブツリーにスタイルを追加するには, ツリーにクラスを適用する:HTML_CONTAINER_CLASS: プロパティを 使います。個々の見出しにCSSスタイルを適用するには、:CUSTOM_ID:プロパティで指定されるIDを使うことができます。


Previous: CSSサポート, Up: HTMLのエクスポート

12.5.9 ウェブページの表示に関するJavaScriptのサポート

Sebastian Roseは、org-modeが生成したHTMLファイルに関するウェブエクスペリエンスを拡張するためにデザインされたJavascriptプログラムを書きました。このプログラムを使うことで、異なる二つの方法で大きなファイルを見ることができます。一つめはInfoのようなモードで、それぞれの章は別々に表示され、nキーとpキーで操作できます。(他のキーでも操作できます。利用できるキーの概要を知るには、?を入力してください。)。二つめは、org-modeがEmacsで提供するような折りたたまれたスタイルです。 このスクリプトは、http://orgmode.org/org-info.jsで利用できます。ドキュメントについては、http://orgmode.org/worg/code/org-info-js/にあります。このスクリプトは私達のサイトでホスティングしていますが、何度も使う場合は、orgmode.orgにあるものを使わずにあなたのサーバにコピーしたものを使う方を選択するかもしれせん。

このスクリプトを使うには、org-jsinfo.elがロードされているか、確認する必要があります。デフォルトでは、ロードされるようになっていますが、M-x customize-variable <RET> org-modules <RET>と入力して、確かにロードされている確認してください。このプログラムを使えるようにするには、次のような行をOrgファイルに追加するだけです。

     #+INFOJS_OPT: view:info toc:nil

ファイル中にこの行が見つかると、HTMLのヘッダーは自動的にこのスクリプトを起動させるのに必要なコードを自動的に追加します。以上のような行を使うと、次のようなオプションを設定できます。

     path:    スクリプトのパス。デフォルトでは、http://orgmode.org/org-info.js 
              を使うようになっていますが、ローカルにコピーしたものを使いたい場合は
              ../scripts/org-info.js’のようなパスを使ってください。
     view:    ウェブサイトを最初に開いた時の表示。可能な値は次のとおり:
              info      一つのページに一つのセクションが表示されるInfoのようなインターフェイス
              overview  最初はトップレベルのみが表示される折りたたみインターフェイス
              content   全ての見出しが見える状態の折りたたみインターフェイス
              showall   全ての見出しと文章が見える状態の折りたたみインターフェイス
     sdepth:  infoや折りたたみモードで独立して表示されるセクションの
              最大の見出しレベル。デフォルトではorg-export-headline-levels
              (= #+OPTIONSの中のHスイッチ)の値が使われる。
              もし、org-export-headline-levelsの値より小さかった場合、
              info/折りたたみ のセクションは小見出しまで含まれます。
     toc:     目次表示の有無
              nilとしても、iを入力することで目次は表示されます。
     tdepth:  目次の深さ。デフォルトでは、org-export-headline-levels
              org-export-with-tocの値が用いられます。
     ftoc:    CSSによって、目次の場所を指定するかどうか。
              「yes」の場合は、セクションとして表示されなくなります。
     ltoc:    それぞれのセクションにショートコンテンツを設置するかどうか。
              セクションの冒頭にショートコンテンツを設置する場合は値をaboveとします。
     mouse:   マウスを見出しの上に移動させた時にハイライトさせます。
              underline’ (default)か、‘#cccccc’のように背景色が指定できます。
     buttons: ビューの変更をトグルさせるボタンを様々なところに設置するかどうか。
              nilの場合は、(デフォルト)、ボタンが一つだけ表示されます。

org-infojs-optionsを変更することで、これらのオプションの初期値を変更することができます。このスクリプトを常にページに適用させたい場合は、org-export-html-use-infojsを変更してください。


Next: , Previous: HTMLのエクスポート, Up: エクスポート

12.6 LaTeXとPDFのエクスポート

org-modeには、Bastien Guerryによって書かれたLaTeXのエクスポート機能があります。追加的な処理と合わせて、120,このバックエンドはPDFの出力にも使われています。LaTeXの出力は、リンクと相互参照の実装にhyperrefを使っているので、出力されたPDFファイルは完全にリンクされているでしょう。セクションの階層に合わせて正しく出力されるためには、orgファイルは適切に構造化されていないといけないので注意してください。


Next: , Previous: LaTeXとPDFエクスポート, Up: LaTeXとPDFエクスポート

12.6.1 LaTeXエクスポートのコマンド

C-c C-e l     (org-export-as-latex)
LaTeXファイルmyfile.texを出力します。Orgファイルに対してmyfile.org、ASCIIファイルはmyfile.texとなるでしょう。そのファイルは警告なしに上書きされます。アクティブなリージョン121があれば、そのリージョンのみが出力されるでしょう。選択したリージョンが一つのツリー122であった場合、ツリーの見出しがタイトルになります。ツリーの見出しのエントリーがEXPORT_FILE_NAMEプロパティを継承、または持っている場合、エクスポートされる際には、その名前が使われるでしょう。C-e L
C-c
C-e L     (org-export-as-latex-to-buffer) 一時バッファに出力します。ファイルを作りません。
C-c C-e v l/L
文書の中で、バッファで表示されている部分だけを出力する。
M-x org-export-region-as-latex
Org-modeの記法が使われているという前提でリージョンをLaTeXに変換します。これはどのバッファでも起動するグローバルなコマンドです。
M-x org-replace-region-by-latex
アクティブなリージョンを(Org-modeの記法が使われている前提で)LaTeXコードに置き変えます。p
C-c C-e
p     (org-export-as-pdf) LaTeXに出力し、PDFにも変換します。d
C-c C-e
d     (org-export-as-pdf-and-open) LaTeXに出力し、PDFにも変換します。その際出力されたPDFファイルを開きます。

エクスポートされたものでは、 最初の3つのアウトラインの階層が一般的な文書の構造と見なされて、見出しとなります。 それ以外の階層は概要のリストとしてエクスポートされます。エクスポート機能では、org-latex-low-levelsを変更することで、この設定を無視、または変更することができます。

この違いを異なる階層で変えたい場合は、 前置引数で、その階層を指定します。 例えば、

     C-2 C-c C-e l

この場合2番目のレベルまでを見出しとして取り扱い、それ以外は項目として取り扱います。


Next: , Previous: LaTeX/PDFエクスポートコマンド, Up: LaTeXとPDFエクスポート

12.6.2 見出しと構造の分割

デフォルトでは、LaTeXの出力にはarticleクラスが使われます。

クラスはorg-export-latex-default-classの値を変更することで、全体的に変更することもできますし、ファイル中にorg-export-latex-default-classのようなオプションを追加することで、局所的に変更することもできます。:LaTeX_CLASS:プロパティを使えば、エクスポートするリージョンにそのツリー(サブツリー)のみが含まれていた場合にクラスを指定できます。クラスは、org-export-latex-classesにリストアップされてます。 この変数は、各クラス123の見出しテンプレートを定義し、各クラスの構造の分割について定義します。クラス自体についても定義されます。#+LaTeX_CLASS_OPTIONS、またはLaTeX_CLASS_OPTIONSプロパティは\documentclassマクロのオプションを指定します。見出しに#+LATEX_HEADER: \usepackage{xyz}を追加して同様のことをすることもできます。詳しい情報については、org-export-latex-classesのドキュメント文字列を参照してください。


Next: , Previous: ヘッダーと章立て, Up: LaTeXとPDFエクスポート

12.6.3 LaTeXコードの引用

LaTeXの組み込みで記述された埋め込まれたLaTeXは、LaTeXに正しく挿入されます。図の相互参照を生成するために、‘\ref{LABEL}’のようなシンプルなマクロが含まれます。さらに、次のような行を追加することで、LaTeXエクスポートの際に表示だけしてほしい特別なコードを追加することができます。

     #+LaTeX: エクスポートする際に文字のまま、出力されるLaTeX code

or

     #+BEGIN_LaTeX
     マーカの間にある全ての行は文字がそのまま出力されます。
     #+END_LaTeX


Next: , Previous: LaTeXコードの引用, Up: LaTeXとPDFエクスポート

12.6.4 LaTeX エクスポートにおけるテーブル

LaTeXで表を出力する際に、番号と表題を指定することができます (see 画像とテーブル)、ATTR_LaTeX行を使うことで、表に関するlongtable環境を呼び出すこともできます。複数のページにまたがる表や、デフォルトの表の環境をtableからtable*にするため、またはデフォルトの内部tabular環境をtabularxtabularyにしたい時にもATTR_LaTeX行は使われます。つまり、文字の配置や (tabularxtabularyを使って)幅を次のようにして設定できます。:

     #+CAPTION: A long table
     #+LABEL: tbl:long
     #+ATTR_LaTeX: longtable align=l|lp{3cm}r|l
     | ..... | ..... |
     | ..... | ..... |

tabularyを使って、複数のセルにまたがる表を指定することもできます。

     #+CAPTION: A wide table with tabulary
     #+LABEL: tbl:wide
     #+ATTR_LaTeX: table* tabulary width=\textwidth
     | ..... | ..... |
     | ..... | ..... |


Next: , Previous: LaTeXエクスポートでのテーブル, Up: LaTeXとPDFエクスポート

12.6.5 LaTeXエクスポートにおける画像

[[file:img.jpg]]’ や ‘[[./img.jpg]]’ のように説明文にリンクされていない画像は、 LaTeX の処理によりPDFの中に挿入されます。 Org-modeは、画像を挿入するのに \includegraphics マクロを使います。もし、画像とテーブルで説明されているように図の表題や番号を特定したいのならば、その図を figure 環境で囲むとfloat要素になります。 \includegraphics マクロのオプション引数として使われている様々なオプションを特定するには #+ATTR_LaTeX: を使います。 figure 環境のオプションの配置を変更するには、 ‘placement=[h!]’ のように属性に追加します。

画像のまわりに文字を回りこませたいのであれば、#+ATTR_LaTeX: の行に ‘wrap’ を追加すると、画像がページの左半分にきます。微調整するには、wrapfigure 環境に引数として、 placement フィールドを追加します。画像のサイズを変更する時は、互換性のある \includegraphicswrapfigure を使わなければいけないので注意してください。

     #+CAPTION:    The black-body emission of the disk around HR 4049
     #+LABEL:      fig:SED-HR4049
     #+ATTR_LaTeX: width=5cm,angle=90
     [[./img/sed-hr4049.pdf]]
     
     #+ATTR_LaTeX: width=0.38\textwidth wrap placement={r}{0.4\textwidth}
     [[./img/hst.png]]

もし、このような番号を参照する必要があれば, LaTeX に ‘\ref{fig:SED-HR4049}’ と記述してください。


Previous: LaTeXエクスポートでの画像, Up: LaTeXとPDFエクスポート

12.6.6 Beamerクラスのエクスポート

LaTeXの一種である beamer は、LaTeXとpdf処理により高品質なプレゼンテーション資料を提供します。Org-modeはOrg-modeのファイルやツリーを beamer のプレゼンテーション資料に変換するのに特別なサポートをします。

カレントバッファ ( #+LaTeX_CLASS: beamer がセットされている) かサブツリー ( LaTeX_CLASS 属性がセットされている)のLaTeXクラスが beamer ならば、特別なエクスポートモードがファイルやツリーをbeamerのプレゼンテーション資料にします。原則的にはあまり深くないネストのツリーなら何でもプレゼンテーション資料にします。デフォルトでは、トップレベルのエントリー (または、選択したサブツリーの最初のレベル) がフレームに変換され、そのレベルの下のアウトライン構造が箇条書きされたリストになります。 変数 org-beamer-frame-level は異なるレベルに設定でき、その時フレームより上の構造はプレゼンテーションの構造の区切りになります。

バッファでの便利なテンプレートに関する設定や属性は M-x org-insert-beamer-options-template によってバッファに挿入されます。その他については、カラムビューのフォーマットにインストールされます。カラムビューはbeamerで使う特別な属性を編集するのに便利だからです。

次のような属性を使ってプレゼンテーションの構造を変えることができます。:

BEAMER_env
このエントリーをフォーマットする環境を指定します。有効な環境が変数 org-beamer-environments-default に定義されていて、さらに org-beamer-environments-extra に追加して定義することができます。もし、この属性がセットされていれば、それを可視化するため、そのエントリーには :B_environment: タグがあるはずです。このタグは字句的な意味はなく、視覚的に補助するためにあります。
BEAMER_envargs
[t][<+->]<2-3> のようなbeamerに特有な引数は、この環境で使われます。もし BEAMER_col 属性がセットされていると、 columns 環境のオプション引数として、 C[t] が追加されたことを意味します。 c[t]c<2->column 環境にオプションとして設定されたことを意味します。
BEAMER_col
この列が始まるときの列の幅です。もしこの属性がセットされていると、そのエントリーには :BMCOL: 属性が現れます。このタグも視覚的な補助のためにあります。もし、これが整数だった場合、 \textwidth の割合とみなされます。 もしくは、 ‘3cm’ のような場合、特定の単位を使ったとみなされます。まず、フレームの中のそのような属性は列に囲まれた columns 環境で始まります。 BEAMER_col 属性が0か1、または自動的にフレームの最後となるエントリーでは、その環境は閉じられます。
BEAMER_extra
その環境が始まった後に挿入される追加的なコマンドです。例えば、フレームを作った時に変遷を特定します。

もし、verbatim環境を使ったソースコードが含まれていると、フレームは自動的に fragile を受けとります。 beamer 特有のコードは #+BEAMER: を使うことで挿入され、 #+BEGIN_beamer...#+end_beamer ブロックは,他のエクスポートのものと似ていますが、 #+LaTeX: はプレゼンテーション資料にも含まれるという点で異なります。

BEAMER_env 属性があるノードの ‘note’ や ‘noteNH’ の値はbeamerのnotesとして処理されます。例えば、 \note{...} のように囲まれます。 前者は、ノートのテキストの一部分として見出しが含まれ、後者は、ノードの見出しは無視されます。ノートの生成を簡単にするには、実は BEAMER_env 属性を作るかわりに、 tag (または :B_note::B_noteNH:) でマークするだけで十分です。

編集作業のサポートを得るには次のオプションを追加して、マイナーモードの org-beamer-mode を有効にします。

     #+STARTUP: beamer
C-c C-b     (org-beamer-select-environment)
org-beamer-mode でこのキーバインドを使うことでbeamerの環境や BEAMER_col 属性を素早く選択することができます。

カラムビューはノードにおける環境及び重要なパラメーターをセットするうえで、優れたやり方です。 カラムのフォーマットがこの特別な目的のためにセットされている確認してください。 コマンド M-x org-insert-beamer-options-template はそのようなフォーマットを定義します。

次の例は、beamerへのエクスポートを意図した簡単なOrg-modeの文書の例です。

     #+LaTeX_CLASS: beamer
     #+TITLE: プレゼンテーション資料の例
     #+AUTHOR: Carsten Dominik
     #+LaTeX_CLASS_OPTIONS: [presentation]
     #+BEAMER_FRAME_LEVEL: 2
     #+BEAMER_HEADER_EXTRA: \usetheme{Madrid}\usecolortheme{default}
     #+COLUMNS: %35ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Args) %4BEAMER_col(Col) %8BEAMER_extra(Ex)
     
     * これは最初の構造的な章です。
     
     ** フレーム 1 \\ サブタイトル
     ***  Eric Fraga へありがとう                                  :BMCOL:B_block:
         :PROPERTIES:
         :BEAMER_env: block
         :BEAMER_envargs: C[t]
         :BEAMER_col: 0.5
         :END:
         Org-modeでの最初のbeamerの設定
     *** みんなへありがとう                                        :BMCOL:B_block:
         :PROPERTIES:
         :BEAMER_col: 0.5
         :BEAMER_env: block
         :BEAMER_envargs: <2->
         :END:
         議論への寄与してくれたみんなへ
     **** これは、beamerのnoteとして処理される。                   :B_note:
     ** Frame 2 \\ 使わないカラム
     *** リクエスト                                                   :B_block:
         この部分を試してみてください!
         :PROPERTIES:
         :BEAMER_env: block
         :END:

さらに詳しく知りたい場合は、Worgの文書を見てください。


Next: , Previous: LaTeXとPDFエクスポート, Up: エクスポート

12.7 DocBookエクスポート

Org-modeは、Baoqiu Cuiによって作成されたDocBookへのエクスポート機能があります。Org-modeのファイルはDocBookのフォーマットで出力され、さらにDocBookのツールやスタイルシートを使ってPDF、HTMLやmanなど他のフォーマットに出力することができます。

現在、DocBookのエクスポート機能はDocBook V5.0をサポートしています。


Next: , Previous: DocBookエクスポート, Up: DocBookエクスポート

12.7.1 DocBookエクスポートコマンド

C-c C-e D     (org-export-as-docbook)
DocBookファイルを出力します。Org-modeのファイル myfile.org はDocBook XMLファイルの myfile.xml となります。ファイルは警告なしに上書きされます。アクティブリージョン 124 がある場合は、リージョンのみが出力されます。選択したリージョンが単一のツリー 125 だった場合は, そのツリーの見出しが文書のタイトルになります。そのツリーの見出しがある、または継承されている場合や、 EXPORT_FILE_NAME 属性がある場合は、その名前がエクスポートに使われます。 V
C-c C-e
V     (org-export-as-docbook-pdf-and-open)

DocBookファイルが出力され、PDF処理を経て出力されたPDFファイルが開きます。

DovBookファイルにエクスポートしてPDFに出力するには、XSLT処理系とXSL-FO処理系を環境にインストールしておく必要があるので注意してください。変数 org-export-docbook-xslt-proc-commandorg-export-docbook-xsl-fo-proc-commandを確認してください。

変数 org-export-docbook-xslt-proc-command でスタイルシートを表わす引数 %s はユーザーによってセットされる変数 org-export-docbook-xslt-stylesheet の値で置き換えられます。Org-modeファイルに #+XSLT: を追加することで、グローバルな設定を封じることができます。


C-c C-e v D
文書の見えている部分だけを出力します。


Next: , Previous: DocBookエクスポートコマンド, Up: DocBookエクスポート

12.7.2 DocBookコードの引用

次のようなブロックを使えば、Org-modeのファイルでDocBookのコードを引用したり、文章をそのままDocBookのファイルにコピーすることができます。

     #+DOCBOOK: エクスポートするDocBookコードの文字列

or

     #+BEGIN_DOCBOOK
     これらのマーカの間の行はDocBookエクスポート機能により文字がそのまま出力されます。
     #+END_DOCBOOK

例えば、DocBookの警告文を含めるには次のような文章を使います。この警告文により、Org-modeのファイルにDocBookコードをのせる時に、文章の文脈に注意を払うでしょう。DocBookコードを正しく引用しないと、DocBook XMLファイルを正確に出力できないかもしれせん。

     #+BEGIN_DOCBOOK
     <warning>
       <para>Org-modeファイルの中でDocBook XMLコードを引用する際、何をしているか
       知っておく必要があります。注意が足りないと、DocBookのエクスポート機能により
       正しくないDocBook XMLが出力されるかもしれません。</para>
     </warning>
     #+END_DOCBOOK


Next: , Previous: DocBookコードの引用, Up: DocBookエクスポート

12.7.3 章の繰り返し

DocBookのエクスポート機能は、DocBookの article 要素を使ってOrg-modeのファイルをarticlesとして出力します。再帰的なsections、例えば section 要素が出力されたarticlesの中で使われます。 Org-modeのファイルのトップレベルの見出しは、トップレベルのsectionsとして出力され、低いレベルの見出しはネストしたsectionsとして出力されます。Org-modeのファイルの全体構造は、完全に出力されます。見出しにネストされたレベルはどれだけあっても構いません。

再帰的なセクションを使えば、 出力されたDocBookコードを他の bookset のようなドキュメントタイプに移植したり、再利用したりするのが用意になります。


Next: , Previous: 章の繰り返し, Up: DocBookエクスポート

12.7.4 DocBookエクスポートでのテーブル

Org-modeの表はHTMLの表を出力します。HTMLの表はDocBook V4.3からサポートされています。

テーブルに表題がなかった場合、 informaltable 要素によってinformal tableが出力されます。表題があれば、table 要素により、テーブルが出力されます。


Next: , Previous: DocBookエクスポートでのテーブル, Up: DocBookエクスポート

12.7.5 DocBookエクスポートでの画像

[[file:img.jpg]]’ や ‘[[./img.jpg]]’ のように説明文にリンクされていない画像は、 mediaobject タグが使われてDocBookに出力されます。 各 mediaobject 要素には、imagedata 要素を囲む imageobject要素が含まれます。もし、画像とテーブルで説明されているように図の表題を特定するならば、 caption 要素を mediaobject の中に追加します。番号も特定する場合は、 mediaobject 要素の中に xml:id 属性が出力されます。figure 環境のオプションの配置を変更するには、 ‘placement=[h!]’ のように属性に追加します。

画像の属性には imagedata 要素がサポートされ、 alignwidth のような属性が二つの方法で特定されます。一つ目は変数 org-export-docbook-default-image-attributes を設定する方法です。二つ目は #+ATTR_DOCBOOK: 行を使う方法です。変数 org-export-docbook-default-image-attributes で特定される属性は出力元のOrg-modeファイルに含まれる全ての画像に適用されます(ただし、 #+ATTR_DOCBOOK: 行で画像の属性が上書きされている場合は除きます。)。

#+ATTR_DOCBOOK: 行は、追加的な画像の属性の指定や個々の画像にデフォルトの画像の属性を上書きするのに使います。もし、 #+ATTR_DOCBOOK: と 変数 org-export-docbook-default-image-attributes に同じ属性が現れた場合、前者の値が優先的に使われます。次の例は画像の属性に関する設定例です。

     #+CAPTION:    Org-modeのロゴ
     #+LABEL:      unicorn-svg
     #+ATTR_DOCBOOK: scalefit="1" width="100%" depth="100%"
     [[./img/org-mode-unicorn.svg]]

デフォルトでDocBookのエクスポート機能は、 jpeg, jpg, png, gif, そして svg のような画像のタイプを認識します。変数 org-export-docbook-inline-image-extensions を設定することで、DocBookがサポートしている画像のタイプを追加することができます。


Previous: DocBookエクスポートでの画像, Up: DocBookエクスポート

12.7.6 DocBook出力における特殊文字

\alpha, \Gamma, そして \Zeta のような TeX ライクなシンタックスで記述された特殊文字列は、DocBookのエクスポート機能でサポートされています。 そのような文字列は、変数 org-entities に格納されているリストにもとづき、&alpha;, &Gamma;, そして &Zeta; のように XML エンティティとして記述されます。対応するエンティティが含まれるDocBookファイルが出力されると、特殊文字列が認識されます。

変数 org-export-docbook-doctype を設定することで必要なエンティティを含めることができます。例えば、 変数 org-export-docbook-doctype に次のような値を設定することで、XHTMLエンティティに含まれる全ての特殊文字列が認識されます。

     "<!DOCTYPE article [
     <!ENTITY % xhtml1-symbol PUBLIC
     \"-//W3C//ENTITIES Symbol for HTML//EN//XML\"
     \"http://www.w3.org/2003/entities/2007/xhtml1-symbol.ent\"
     >
     %xhtml1-symbol;
     ]>
     "


Next: , Previous: DocBookエクスポート, Up: エクスポート

12.8 TaskJugglerエクスポート

TaskJugglerはプロジェクト管理ツールです。 プロジェクトのアウトラインと設定して制限をもとにプロジェクトのタイムラインとリソースの割り当てを計算して最適化されたスケジュールを提供します。

TaskJugglerのエクスポート機能は、例えばHTMLやLaTeXのような他のエクスポート機能とは少し違い、ドキュメントのノード全てを出力しませんし、ドキュメントのノードの序列に従って出力することもしません。

代わりに、TaskJugglerのエクスポート機能はタスクが定義されているツリーか、このプロジェクトのリソースとして任意に定義されたツリーを探します。そして、それらツリーと全てのノードの中で定義された属性をもとにTaskJugglerファイルを作成します。

12.8.1 TaskJugglerのエクスポートコマンド

C-c C-e j     (org-export-as-taskjuggler)
TaskJugglerファイルを出力します。


C-c C-e J     (org-export-as-taskjuggler-and-open)
TaskJugglerファイルを出力し、TaskJugglerUIでファイルを開きます。

12.8.2 タスク

いつものようにOrg-modeでタスクを作ります。各タスクにプロパティを使ってエフォートを指定します (カラムビューを使うと簡単です。)。 最終的には、Peter Jonesが作成したhttp://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.orgの例と似たものになっているはずです。次に、タスクのトップノードを:taskjuggler_project:というタグでマークします (または変数org-export-taskjuggler-project-tagをカスタマイズします)。これでプロジェクトの計画をC-c C-e Jで出力する準備ができました。出力されれば、TaskJugglerUIでガントチャートが開くはずです。

12.8.3 リソース

次に特定のタスクにリソースを割り当てることができます。階層的にリソースをまとめることもできます。トップノードのタグは:taskjuggler_resource:になります (またはorg-export-taskjuggler-resource-tagをカスタマイズします。)。識別子(‘resource_id’)をリソースに割り当てることもできます(標準的なOrg-modeのプロパティについては, see プロパティの表記法)。また、エクスポート機能は自動で識別子を生成することができます。(識別子はユニークであればよいので、エクスポート機能は見出しの最初の単語を抽出します。詳しくはorg-taskjuggler-get-unique-idのドキュメントを読んでください)。識別子を使ってリソースをタスクに再配置することができます。‘allocate’属性がタスクで再び実行されます。カラムビューか、タスク上でC-c C-x p allocate <RET> <resource_id> <RET>と入力することで実行されます。

再配置が実行されると、再びTaskJugglerに出力してリソースの再配置グラフを確認することができます。そのグラフでは、各人がいつ何のタスクをこなしているかがわかります。

12.8.4 属性の出力

エクスポート機能はTODOの状態に関する情報も考慮されています。例えば、タスクが「DONE」とマークされると、それに対応して、TaskJugglerの属性も(‘complete 100’)となります。タスクリソースやタスクノード上のうTaskJugglerで使われる‘limits’, ‘vacation’, ‘shift’, ‘booking’, ‘efficiency’, ‘journalentry’, ‘rate’のようなリソースの属性や‘account’, ‘start’, ‘note’, ‘duration’, ‘end’, ‘journalentry’, ‘milestone’, ‘reference’, ‘responsible’, ‘scheduling’などのタスクの属性も、出力されます。

12.8.5 依存状態

エクスポート機能はタスクで‘ORDERED’ 属性 (see TODO間の関係)、‘BLOCKER’ 属性 (see org-depend.el)、そして選択的に‘depends’属性で表される依存状態を操作することができます。‘BLOCKER’ 属性も‘depends’属性も‘previous-sibling’のように扱えますし、プロジェクトの他のタスクで定義された識別子への参照 (‘task_id’)として扱うこともできます。‘BLOCKER’属性と‘depends’属性は、カンマやスペースで分けることで複数の依存状態として定義できます。依存状態の属性は、単純に追加することで任意の属性を追加することができます。これまでの例は次のように記述できます。

     * Preparation
       :PROPERTIES:
       :task_id:  準備
       :ORDERED:  t
       :END:
     * 練習の材料
       :PROPERTIES:
       :task_id:  training_material
       :ORDERED:  t
       :END:
     ** マークアップのガイドライン
        :PROPERTIES:
        :Effort:   2.0
        :END:
     ** ワークフローのガイドライン
        :PROPERTIES:
        :Effort:   2.0
        :END:
     * プレゼンテーション
       :PROPERTIES:
       :Effort:   2.0
       :BLOCKER:  training_material { gapduration 1d } preparation
       :END:

12.8.6 レポート

TaskJugglerは多くのレポートを作成できます。(例えば gantt chart, resource allocationなど)。TaskJugglerファイルにあるプロジェクトでどのレポートを作成するか定義することができます。エクスポート機能は自動的にデフォルトのレポートをファイルに挿入します。それらは、org-export-taskjuggler-default-reportsで定義されています。カスタマイズ機能を使って、他の様々なオプションを変更することができます。ほかのオプションについて知りたい時はM-x customize-group <RET> org-export-taskjuggler <RET>と入力した確認してください。

さらに詳しい情報や例を見たい時は、http://orgmode.org/worg/org-tutorials/org-taskjuggler.htmlでOrg-taskjugglerチュートリアルを見てください。


Next: , Previous: TaskJugglerエクスポート, Up: エクスポート

12.9 Freemindエクスポート

Freemindのエクスポート機能はLennart Borgmanによって作成されました。

C-c C-e m     (org-export-as-freemind)
Freemindのマインドマップファイル myfile.mm を出力します。


Next: , Previous: Freemindエクスポート, Up: エクスポート

12.10 XOXOエクスポート

Org-modeにはXOXOスタイルで出力するエクスポート機能があります。現在、このエクスポート機能は一般的なアウトライン構造を扱うだけで、Org-modeの特徴を解釈しません。

C-c C-e x     (org-export-as-xoxo)
XOXOファイルを myfile.htmlとして出力します。
C-c C-e v x
見えている部分だけを出力します。


Previous: XOXOエクスポート, Up: エクスポート

12.11 iCalendarエクスポート

Org-modeユーザーには、プロジェクトの進行を記録している人もいますが、中にはまだ誕生日や予約のために標準的なカレンダーアプリケーションを好む人もいます。このような場合、カレンダーアプリケーションでOrg-modeのファイルにあるデッドラインとタイムスタンプのある項目が表示されると便利です。Org-modeはカレンダーの情報を標準的なiCalendarに出力することができます。もしTODOアイテムも出力したいならば、変数org-icalendar-include-todoを調整しま。タイムスタンプはVEVENTとして出力され、TODOアイテムはVTODOとして出力されます。TODOアイテムでないデッドラインもイベントが生成されます。デッドラインとTODOアイテムの予定日はTODOアイテム126の開始日と期日として扱われます。カテゴリーには、見出しで定義されたタグやファイルやツリーのカテゴリー127が使われます。アラームを設定する方法については、変数org-icalendar-alarm-timeを参照してください。

標準のiCalendar形式はそれぞれのエントリーにグローバルでユニークな識別子(UID)が必要となります。Org-modeではエクスポートする際にこの識別子を作成します。変数org-icalendar-store-UIDが設定されていると、UIDはエントリーの :ID:属性に保存され、次にこのエントリーを使うときに再度利用されます。一つの項目が複数のiCalendar形式の項目(タイムスタンプ、デッドライン、スケジューリングされたアイテムやTODOアイテム)となるので, エントリーの中のトリガーによって、Org-modeはUIDにプレフィックスをつけます。このようにして、UIDはユニークな値となりますが、同期処理では全て異なるエントリーから作られたエントリーとみなされるでしょう。

C-c C-e i     (org-export-icalendar-this-file)
現在のファイルからiCalendar形式のエントリーを作成し、拡張子.icsをつけて同じディレクトリに保存します。
C-c C-e I     (org-export-icalendar-all-agenda-files)
C-c C-e iに似ていますが、org-agenda-filesで指定された全てのファイルで実行されます。それぞれのファイルでiCalendar形式のファイルが作成されます。
C-c C-e c     (org-export-icalendar-combine-agenda-files)
org-agenda-filesで指定されたファイルから単一のiCalendar形式のファイルを生成し、org-combined-agenda-icalendar-fileで指定されたファイルに出力します。

エクスポート機能はエントリーがSUMMARY、DESCRIPTIONそしてLOCATION属性128を持っていた場合、それを継承します。なかった場合はSUMMARY属性は見出しから抽出され、DESCRIPTION属性はその内容 (org-icalendar-include-bodyで制限されます。)から抽出されます。

このカレンダーを読んだり更新したりするのにベストな方法は、使うカレンダーアプリケーション次第です。FAQではこの問題についてカバーしています。


Next: , Previous: エクスポート, Up: Top

13 公開

Org-modeは連結されたOrg-modeのファイルから成るprojectsの自動的なHTMLへの変換設定をあなたに許可します.あなたはまた,エクスポートしたHTMLページと画像やソースコードのような関係する添付ファイルの自動的なアップロードをOrg-modeに設定できます.

あなたはまた,Org-modeからPDFへ変換することもでき,さらに,サーバ上で両方のファイルを利用できるようにHTMLとPDFへの変換を組み合わせることも可能です.

公開はDavid O'TooleによってOrg-modeに寄与されました.


Next: , Previous: 公開, Up: 公開

13.1 設定

公開はファイルの指定,公開先,プロジェクトのその他多くのプロパティの重要な設定を必要とします.


Next: , Previous: 設定, Up: 設定

13.1.1 org-publishing-alist変数

公開はorg-publish-project-alistというある変数の値により設定されます.リストの各要素が1つのプロジェクトの設定で,2種類の設定方法について以下に示します:

        ("project-name" :property value :property value ...)
          i.e. a well-formed property list with alternating keys and values
     or
        ("project-name" :components ("project-name" "project-name" ...))
     

どちらの場合もプロパティと値の指定によって設定されます.プロジェクトは公開されるファイルのセットと,それらが公開される時に使用する設定を定義します.上記の2番目の形式を取る場合,:componentsプロパティの個々のメンバは異なる公開設定を持つファイルをまとめたサブプロジェクトとして扱われます.あなたが“メタプロジェクト”を公開する時,全てのコンポーネントは特定の順序で公開されます.


Next: , Previous: プロジェクトのリスト, Up: 設定

13.1.2 ファイルの送り元と送り先

多くの<プロパティは任意に選択でき,しかし多くは常にセットされているべきです.特に,Org-modeはソースファイルをどこで探すか,またファイルの公開先を知る必要があります.

:base-directory 公開するソースファイルを含むディレクトリ
:publishing-directory アウトプットファイルのあるディレクトリは公開されます.あなたはEmacstrampパッケージの構文のファイル名を使ってウェブサーバに直接公開することができます.もしくは,ローカルディレクトリに公開したり,あなたのウェブサイト(see ファイルのアップロード)にアップロードするための拡張ツールを使うことができます.
:preparation-function 公開プロセスの開始前に呼ばれる関数または関数のリストです(例えば,公開のためのファイルの更新に使うmakeを実行します).project-plist変数であるプロジェクトのプロパティリストはこの呼び出しにスコープされます.
:completion-function 公開プロセスが完了した後に呼ばれる関数または関数のリストです(例えば,出力したファイルの権限を変更します).project-plist変数であるプロジェクトのプロパティリストはこの呼び出しにスコープされます.


Next: , Previous: ソースと公開先, Up: 設定

13.1.3 ファイルの選択

デフォルトでは,ベースディレクトリの中の拡張子が.orgである全てのファイルはプロジェクトの一部であるとみなされます.これはプロパティの設定により変更することができます:

:base-extension ソースファイルの拡張子(.を除きます!)です.これは実際は正規表現です.もしあなたが:base-directoryの中の全てのファイルを取得したいのであれば,anyシンボルをセットします.


:exclude そのファイルの拡張子が選択されていたとしても,公開したくないファイル名にマッチする正規表現.


:include :base-extension:excludeにかかわらずインクルードするファイルのリスト.


:recursive nilでなければ,ベースディレクトリから再帰的に公開するファイルをチェックします.


Next: , Previous: ファイルの選択, Up: 設定

13.1.4 公開アクション

公開は,ファイルを宛先ディレクトリにコピーし,場合によっては変換することです.デフォルトの変換はOrg-modeファイルからHTMLファイルへのエクスポートで,これはHTMLエクスポーター(see HTMLのエクスポート)を呼び出すorg-publish-org-to-htmlによって行われます.しかしあなたはまた,org-publish-org-to-pdfを用いたPDFファイルのようなコンテンツも公開することができます.もしあなたがアーカイブされたコメントされた除外タグがついたツリーを消去したOrg-modeファイル自身を公開したいのであれば,org-publish-org-to-orgを使い,:plain-sourceパラメーターと/または:htmlized-sourceをセットします.これは公開ディレクトリ129file.orgfile.org.htmlを作ります.画像のようなその他のファイル公開ディレクトリにコピーされる必要があります; このために,あなたはorg-publish-attachmentを使うことができます.Org-modeでないファイルのために,あなたは常に公開用の関数を指定する必要があります:

:publishing-function ファイルの公開を実行する関数です.これは,順番に呼び出される関数のリストにすることもできます.
:plain-source nilでなければ,プレーンソースを公開します.
:htmlized-source nilでなければ,HTMLに変換されたソースを公開します.

関数には3つの引数を渡す必要があります: 最低でも:publishing-directoryプロパティを含むプロパティリスト,公開されるファイル名,出力ファイルの公開ディレクトリへのパスです.それは指定されたファイルを取り,(もしあれば)必要な変換を行い,出力をコピー先ディレクトリに置きます.


Next: , Previous: 公開アクション, Up: 設定

13.1.5 HTML/LaTeXエクスポート機能のオプション

プロパティリストはHTMLとLaTeXエクスポート機能の多くのエクスポートオプションをセットするために使うことができます.多くの場合,これらのプロパティはOrg-mode中のユーザ変数と対応します.下のテーブルはそれらが所属する変数と同様なプロパティのリストです.各変数の詳細については,ドキュメントを参照してください.

:link-up org-export-html-link-up
:link-home org-export-html-link-home
:language org-export-default-language
:customtime org-display-custom-times
:headline-levels org-export-headline-levels
:section-numbers org-export-with-section-numbers
:section-number-format org-export-section-number-format
:table-of-contents org-export-with-toc
:preserve-breaks org-export-preserve-breaks
:archived-trees org-export-with-archived-trees
:emphasize org-export-with-emphasize
:sub-superscript org-export-with-sub-superscripts
:special-strings org-export-with-special-strings
:footnotes org-export-with-footnotes
:drawers org-export-with-drawers
:tags org-export-with-tags
:todo-keywords org-export-with-todo-keywords
:priority org-export-with-priority
:TeX-macros org-export-with-TeX-macros
:LaTeX-fragments org-export-with-LaTeX-fragments
:latex-listings org-export-latex-listings
:skip-before-1st-heading org-export-skip-text-before-1st-heading
:fixed-width org-export-with-fixed-width
:timestamps org-export-with-timestamps
:author user-full-name
:email user-mail-address : addr;addr;..
:author-info org-export-author-info
:email-info org-export-email-info
:creator-info org-export-creator-info
:tables org-export-with-tables
:table-auto-headline org-export-highlight-first-table-line
:style-include-default org-export-html-style-include-default
:style-include-scripts org-export-html-style-include-scripts
:style org-export-html-style
:style-extra org-export-html-style-extra
:convert-org-links org-export-html-link-org-files-as-html
:inline-images org-export-html-inline-images
:html-extension org-export-html-extension
:html-preamble org-export-html-preamble
:html-postamble org-export-html-postamble
:xml-declaration org-export-html-xml-declaration
:html-table-tag org-export-html-table-tag
:expand-quoted-html org-export-html-expand
:timestamp org-export-html-with-timestamp
:publishing-directory org-export-publishing-directory
:select-tags org-export-select-tags
:exclude-tags org-export-exclude-tags
:latex-image-options org-export-latex-image-default-option

org-export-with-*変数の大部分はLaTeXエクスポートでniltのそれぞれで:TeX-macros:LaTeX-fragmentsオプションを除きHTMLとLaTeXエクスポート機能の両方で同じ効果を持ちます.このオプションのリストをチェックするにはorg-export-plist-varsを見てください.

プロパティがorg-publish-project-alist中の値で与えられた時,その設定は公開時に対応するユーザー変数を上書きします.オプションをファイル(see エクスポートオプション)内でセットしても,全て上書きされます.


Next: , Previous: 公開オプション, Up: 設定

13.1.6 公開ファイル間のリンク

あるOrg-modeファイルから別のファイルへのリンクを作成する方法として,あなたは‘[[file:foo.org][The foo]]’,もしくはより単純な‘file:foo.org.’(see ハイパーリンク)のような形式を使うことができます.公開するとき,このリンクはfoo.htmlへのリンクとなります.この方法では,あなたはあなたの\"Org-modeウェブ\"プロジェクトのページとHTMLへ公開するときにリンクを連結することができます.もしあなたがOrg-modeのソースファイルを公開したりそこへのリンクを作成したいのであれば,file:リンクは対応するhtmlファイルにリンクが変換されるため,file:リンクの代わりにhttp:リンクを使います.

あなたはまた,画像のような関連するファイルへのリンクを作成することができます.あなたが関連するファイル名に慎重になっているとき,そしてあなたが関連するファイルをアップロードするOrg-modeの設定をするとき,これらのリンクも働きます.使い方の例は,複雑な例を参照してください.

時々,公開されるOrg-modeファイルはあなたの製品環境内でのみ有効で,公開する場所では有効でないなリンクを含むことができます.この場合,次のプロパティを使います.

:link-validation-function 有効にする関数

このプロパティはリンクの有効性をチェックする関数を定義します.この関数はファイル名と製品環境内で解釈できるファイル名に関連するディレクトリ2つの引数を持ちます.もしこの関数がnilを返すなら,HTMLジェネレータはHTMLファイルにリンクを除き説明のみ挿入します.この関数へのオプションとして,org-publish-project-alist中のプロジェクトの一部であるファイルが与えられているなチェックするorg-publish-validate-linkがあります.


Next: , Previous: ファイルリンク付きの公開, Up: 設定

13.1.7 サイトマップの生成

以下のプロパティはプロジェクトのファイルのマップの公開を制御するために使うことができます.

:auto-sitemap nilでないとき,org-publish-current-projectもしくはorg-publish-allの実行中にサイトマップを公開します.


:sitemap-filename 出力するサイトマップのファイル名です.デフォルトではsitemap.org(sitemap.htmlになります)です.


:sitemap-title サイトマップページのタイトルです.デフォルトはファイル名です.


:sitemap-function サイトマップの生成に使うプラグイン関数です.デフォルトではorg-publish-org-sitemapで,プロジェクト中の全てのファイルへのリンクのプレーンリストを生成します.


:sitemap-sort-folders フォルダがサイトマップに表示される位置です.先頭か最後にそれぞれフォルダを表示するため,これにfirst(デフォルト)かlastをセットしてください.


:sitemap-sort-files サイトマップ中でのファイルのソート方法です.alphabetically(デフォルト),chronologicallyまたはanti-chronologicallyをセットします.chronologicallyはファイルを日付の古い順番にソートし,anti-chronologicallyは新しい順番にソートします.alphabeticallyはファイルをアルファベット順にソートします.ファイルの日付はorg-publish-find-datにより検索します.


:sitemap-ignore-case ソート時に大文字と小文字を区別するかどうかです.デフォルトではnilです.


:sitemap-file-entry-format このオプションでサイトマップのエントリがサイトマップでフォーマットされているか知ることができます.これはエスケープシークエンスを含むフォーマット文字列です: %tはファイルのタイトル,%aはファイルの著者,%dはファイルの日付を表します.日付はorg-publish-find-date関数により検索され,org-publish-sitemap-date-formatによりフォーマットされます.デフォルトは%tです.


:sitemap-date-format エントリの日付をどのようにフォーマットするかを決めるformat-time-string関数用のフォーマット文字列です.このプロパティはデフォルトでは%Y-%m-%dであるrog-publish-sitemap-date-formatを迂回します.


Previous: サイトマップ, Up: 設定

13.1.8 インデックスの生成

Org-modeは公開するプロジェクトのファイルを跨ぐインデックスを生成することができます.

:makeindex nilでないとき,theindex.orgファイルにインデックスを作成し,theindex.htmlに公開します.

:makeindexを設定したプロジェクトの最初の公開のとき,ファイルは作成されます.ファイルは#+include: \"theindex.inc\"ステートメントのみを含みます.あなたはタイトルやスタイル情報等をステートメントの周囲に追加することができます.


Next: , Previous: 設定, Up: 公開

13.2 ファイルのアップロード

Trampに深く頼っているOrg-modeの組込みの公開機能を使うことは望ましくなく,rsyncunisonのようなサードパーティの同期ツールを人々は活用しています. Trampは非常に便利で協力ですが,複数のファイルを送る場合効率的でない場合があり,ヘビーに使う環境下での問題の原因として知られています.

専用の同期ユーティリティはいくつかのアドバンテージを提供します.タイムスタンプの比較に加えて,コンテンツや権限,属性のチェックも行います.そういうわけで,あなたのWEBページをローカルディレクトリ(場合によるとOrg-modeファイルの場所で)に公開し,そしてunisonrsyncをリモートホストとの同期に使うために選ぶことができます.

Unisonはファイルを信頼できるリモートの公開先に転送する設定を行うことができるので,プロジェクトの公開についての定義を非常にシンプルにすることができます.org-publishを用いるあなたのOrg-modeファイルの処理と同期ツールの設定により,正しい場所で全てのファイルをシンプルに保ちます.このシナリオでは,jpgcssgifのようなファイルの添付については,サードパーティの同期ツールがそれらを同期するため,設定する必要がありません.

ローカルディレクトリの公開はリモートへの公開に比べると高速で, 全てのプロジェクトをより簡単に再公開できます.もしあなたがorg-publish-use-timestamp-flagnilに設定しているのであれば,変更が加えられた#+INCLUDEでインクルードしたたソースファイルのような外部ファイルの再公開で恩恵を受けます.Org-modeにおけるタイムスタンプのメカニズムはファイルに変更が加えられたかどうか検出できるほどスマートではありません.


Next: , Previous: ファイルのアップロード, Up: 公開

13.3 設定例

私達は2つの設定の例を以下に示します.1つ目の設定はOrg-modeファイルのみのシンプルなプロジェクトの公開です.2つ目の設定は複数のコンポーネントを持つプロジェクトで,少し複雑な例です.


Next: , Previous: 設定例, Up: 設定例

13.3.1 例:シンプルな公開用の設定

この例はOrg-modeファイルのセットをローカルマシンのpublic_htmlにディレクトリ公開します.

     (setq org-publish-project-alist
           '(("org"
              :base-directory "~/org/"
              :publishing-directory "~/public_html"
              :section-numbers nil
              :table-of-contents nil
              :style "<link rel=\"stylesheet\"
                     href=\"../other/mystyle.css\"
                     type=\"text/css\"/>")))


Previous: 簡単な例, Up: 設定例

13.3.2 例:複雑な公開用の設定

この少し複雑な例はHTMLに変換されたorg-modeファイル,画像ファイル,Emacs Lispのソースコード,スタイルシートなどを含む全てのウェブサイトを公開します.公開ディレクトリはリモートと除外されたプライベートなファイルです.

リンクが保持されていることを保証するには,ウェブサーバ上のディレクトリ構造の再現,ファイルの相対パスの使用を慎重にするべきです.例えば,もしあなたのOrg-modeファイルが~/orgに,公開する画像が~/imageにあるとすると,あなたは画像のリンクを以下のようにします.

     file:../images/myimage.png

ウェブサーバ上では,画像への相対パスは同じにするべきです.あなたは\"images\"フォルダをウェブサーバ上の正しい一に置き,画像をそこに公開することでこれを達成することができます.

     (setq org-publish-project-alist
           '(("orgfiles"
               :base-directory "~/org/"
               :base-extension "org"
               :publishing-directory "/ssh:user@host:~/html/notebook/"
               :publishing-function org-publish-org-to-html
               :exclude "PrivatePage.org"   ;; regexp
               :headline-levels 3
               :section-numbers nil
               :table-of-contents nil
               :style "<link rel=\"stylesheet\"
                       href=\"../other/mystyle.css\" type=\"text/css\"/>"
               :html-preamble t)
     
              ("images"
               :base-directory "~/images/"
               :base-extension "jpg\\|gif\\|png"
               :publishing-directory "/ssh:user@host:~/html/images/"
               :publishing-function org-publish-attachment)
     
              ("other"
               :base-directory "~/other/"
               :base-extension "css\\|el"
               :publishing-directory "/ssh:user@host:~/html/other/"
               :publishing-function org-publish-attachment)
              ("website" :components ("orgfiles" "images" "other"))))


Previous: 設定例, Up: 公開

13.4 公開の開始

一度適切に設定すると,Org-modeは以下のコマンドを使うことで公開することができます.

C-c C-e X     (org-publish)
プロンプトでプロジェクトを指定し,プロジェクトの全てのファイルを公開します.
C-c C-e P     (org-publish-current-project)
現在のファイルを含むプロジェクトを公開します.
C-c C-e F     (org-publish-current-file)
現在のファイルのみ公開します. E
c-c C-e
E     (org-publish-all) 全てのプロジェクトを公開します.

Org-modeはファイルが変更された時を記録するためにタイムスタンプを使います.上記の関数は通常変更されたファイルのみを公開します.あなたはこれを上書きし,上記コマンドに前置引数を付けて実行するかorg-publish-use-timestamps-flag変数をカスタマイズすることで全てのファイルを強制的に公開できます.もし,ファイルが#+SETUPFILE:#+INCLUDE:を用いて他のファイルをインクルードしているなら特別必要です.


Next: , Previous: 公開, Up: Top

14 ソースコードとの連携

src’ブロックを使う事でOrg-modeの文書にソースコードを含めることができます。例えば

     #+BEGIN_SRC emacs-lisp
       (defun org-xor (a b)
          "Exclusive or."
          (if a (not b) b))
     #+END_SRC

Org-modeでは生のソースコードと連携する幾つかの機能を用意してます。その機能には、コードブロックをそのメジャーモードで編集する機能、コードブロックを評価する機能、コードブロックをソースコードへと変換する機能(文芸的プログラミングではtanglingと知られている機能)、そしてコードブロックとその結果を幾つかのフォーマットに沿ってエクスポートする機能が含まれます。この機能はもともとOrg-bablelと名付けられ、Eric SchultとDan Davidsonによって開発されました。

以下のセクションでは、Org-modeでコードブロックを取り扱う機能について説明します。


Next: , Previous: ソースコードとの連携, Up: ソースコードとの連携

14.1 コードブロックの構造

コードブロックの構造は以下の通りです:

     #+srcname: <name>
     #+begin_src <language> <switches> <header arguments>
       <body>
     #+end_src

スイッチとヘッダー引数は省略可能です。次のように、コードを文章にインラインで埋め込むこともできます。

     src_<language>{<body>}

もしくは

     src_<language>[<header arguments>]{<body>}
<name>
この「name」はコードブロックと関連付けられています。これは、Org-modeのファイル内でテーブルに名前を付ける‘#+tblname’行と似ています。コードブロックの名前を参照することで、そのファイル内の別の場所にあるコードブロックや別のファイルの別の場所にあるコードブロック、またはOrg-modeのテーブルの計算式(スプレッドシートを見て下さい)にあるコードブロックから評価することが可能となります。
<language>
ブロック内にあるコードの言語です。
<switches>
コードブロックのエクスポートを管理する省略可能なスイッチです(リテラルの例を参照してください)
<header arguments>
コードブロックの評価、コードブロックのエクスポート、そしてコードブロックからのソースコードの抽出において、省略可能なヘッダー引数が多くの側面を管理します。ヘッダー引数セクションを見て下さい。プロパティを使うことで、バッファ毎もしくはサブツリー毎にヘッダー引数を設定できます。
<body>
ソースコードです。


Next: , Previous: コードブロックの構造, Up: ソースコードとの連携

14.2 ソースコードの編集

現在のコードブロックを編集するにはC-c 'を使ってください。コードブロックの本文を含んだ編集バッファが、その言語のメジャーモードで新たに開かれます。このバッファを保存すると、Org-modeのバッファへ新しい内容を上書きします。終了させるには再度C-c 'を使って下さい。

編集バッファにてorg-src-modeのマイナーモードが起動します。編集バッファの振る舞いを設定するために、以下の変数が使えます。さらなる設定オプションについては、カスタマイズのグループorg-edit-structureも見て下さい。

org-src-lang-modes
<lang>-modeと名付けられたメジャーモードがEmacsに存在する場合、そのメジャーモードで編集バッファを開きます。ここで<lang>とは、コードブロックのヘッダー行で指名された言語のことです。存在するメジャーモードに任意の言語名を割り当てるために、この変数を使えます。
org-src-window-setup
編集バッファを新規作成する時に、Emacsのウィンドウが再配置される方法を管理します。
org-src-preserve-indentation
ホワイトスペース(空白)のインデントが非常に重要であるPythonなどの言語をtangling(コード本文を抽出)するときに、この変数は特に役に立ちます。
org-src-ask-before-returning-to-edit-buffer
デフォルトでは、既に開いてある編集バッファへと戻る前に、Org-modeが確認のプロンプトを出します。確認のプロンプトを出さずにバッファを変更するには、この変数をnilに設定してください。

Org-modeバッファ内にもかかわらず、記述した言語をメジャーモードの配色で表示したい場合には、変数org-src-fontify-nativelyを設定してください。


Next: , Previous: ソースコードの編集, Up: ソースコードとの連携

14.3 コードブロックのエクスポート

コードブロックの内容、コードブロックを評価した結果いずれでもないもの、もしくは内容と結果両方をエクスポートできます。ほとんどの言語では、デフォルトの設定ではコードブロックの内容をエクスポートします。しかし、ある言語(例えば ditaa)では、デフォルトの設定でコードブロックを評価した結果をエクスポートします。コードブロックの本文をエクスポートするには、リテラルの例を参照してください。

ヘッダー引数:exportsを設定することで、エクスポート時の振る舞いを指定できます:

ヘッダー引数:
:exports code
ほとんどの言語でのデフォルトの設定です。リテラルの例で述べたように、コードブロックの本文が出力されます。
:exports results
エクスポートするために、コードブロックが評価され、その結果がOrg-modeのバッファに出力されます。バッファ内に以前評価した結果があればその結果を更新し、もし以前に評価した結果が無ければ直ちに今回の評価結果をコードブロックの後に追記します。コードブロックの本文はエクスポートされません。
:exports both
コードブロックとその結果の両方がエクスポートされます。
:exports none
コードブロックとその結果のいずれもエクスポートされません。

エクスポートの間、コードブロックの評価を抑止することも可能です。変数org-export-babel-evaluatenilと設定することで、エクスポートのプロセスの一部としてのコードブロックの評価を抑止できます。例えばwikiのマークアップ言語としてOrg-modeを使う場合など、信頼できない可能性があるOrg-modeが自動的にエクスポートされる場合には、この設定が役立ちます。


Next: , Previous: コードブロックのエクスポート, Up: ソースコードとの連携

14.4 ソースコードの抽出

ソースブロックからコードを抽出して純粋なソースコードファイルを作成することを、“tangling”といいます。この用語は文芸的プログラミングのコミュニティで使われている専門用語です。コードブロックを“tangling”する間、変数と“noweb”スタイルの参照点(Nowebでの参照の構文を参照)との両方を展開できるorg-babel-expand-src-blockを使ってコードブロックの本文を展開します。

ヘッダー引数
:tangle no
デフォルトの設定です。コードブロックは、tangleされたアウトプットには含まれません。
:tangle yes
tangleされたアウトプットにコードブロックが含まれます。アウトプットされるファイルの名前は、orgファイルの拡張子‘.org’をブロックに記述した言語の拡張子名に置換したものです。
:tangle filename
filename’へのtangleされたアウトプットにはコードブロックを含みます。

関数
org-babel-tangle
現在のファイルをtangleします。キーバインドはC-c C-v tです。
org-babel-tangle-file
tangleするファイルを選びます。キーバインドはC-c C-v fです。
フック
org-babel-post-tangle-hook
関数org-babel-tangleによってtangleされたコードファイルの中から、このhookが実行されます。tangleされたコードファイルの後処理、編集もしくは評価を、実用例として含められます。


Next: , Previous: ソースコードの抽出, Up: ソースコードとの連携

14.5 コードブロックの評価

コードブロックを評価し130、その結果をOrg-modeバッファに表示することが可能です。デフォルトでは、emacs-lispのコードブロックだけを評価しますが、多くの言語での評価のサポートがあります。サポートされている言語のリストは、言語で見ることができます。コードブロックを定義する構文についてコードブロックの構造を参照してください。

コードブロックを評価する方法は多くあります。一番簡単な方法は、コードブロック131にてC-c C-cもしくはC-c C-v eをと入力することです。これが関数org-babel-execute-src-blockをコール、コードブロックを評価し、その結果をOrg-modeバッファに挿入します。

Org-modeのバッファ内、もしくはOrg-modeのテーブル内のどこからでも、名前付きのコードブロックを評価することも可能です。現在のOrg-modeバッファや“Library of Babel”(Babelライブラリにあるコードブロックを離れた場所から実行するには、#+call行 (もしくは同義語として#+function行や#+lob行)が使えます。これらの行は、以下の構文を使います。

     #+call: <name>(<arguments>) <header arguments>
     #+function: <name>(<arguments>) <header arguments>
     #+lob: <name>(<arguments>) <header arguments>
<name>
評価されるコードブロックの名前です。
<arguments>
この場所に記述された引数をコードブロックへと渡します。通常の関数呼び出しの構文を使って呼び出されたコードブロック内では、これらの引数はヘッダー引数:varと関係しています。例えば、doubleと名付けられたもともとのコードブロックではヘッダー引数が:var n=2と書かれている場合、そのコードブロックへ数値の4を渡すには、call行を#+call: double(n=4)と記述します。
<header arguments>
関数呼び出しの後にヘッダー引数をセットできます。ヘッダー引数の詳細についてはヘッダー引数を参照してください。

上の<header arguments>という部分に記述された全てのヘッダー引数は、#+call:行の評価に適用されます。しかし、時には、コードブロックへ渡すヘッダー引数を指定することが好ましい場合もあります。

これには、以下の選択可能な拡張された構文を使えます。

     #+call: <name>[<block header arguments>](<arguments>) <header arguments>

角括弧([])で囲まれた<block header arguments>部分に置かれたヘッダー引数がどのようなものであっても、名前付きコードブロックの評価に適用されます。#+call:行へとヘッダー引数を渡す例については、関数実行時のヘッダー引数を参照してください。


Next: , Previous: コードブロックの評価, Up: ソースコードとの連携

14.6 Babelライブラリ

“Library of Babel”は、どのOrg-modeのファイルからも呼び出せるコードブロックのライブラリです。 そのライブラリは、Org-modeの‘contrib’ディレクトリのOrg-modeファイルに格納されています。Org-modeのユーザーは、一般的に有用だと考えられる関数をそのライブラリ内に置くことができます。

“Library of Babel”で定義されたコードブロックは、あたかも現在のOrg-modeバッファで処理されるかのように、リモートで呼び出せます(リモートでコードブロックを評価する構文についての情報は、コードブロックの評価を参照してください)。

どんなOrg-modeファイルに記述されたコードブロックでも、org-babel-lob-ingestを使って“Library of Babel”の関数へロードできます。キーバインドはC-c C-v iです。


Next: , Previous: Babelライブラリ, Up: ソースコードとの連携

14.7 言語

コードブロックでは、以下の言語を使えます。

言語 識別子 言語 識別子
Asymptote asymptote Emacs Calc calc
C C C++ C++
Clojure clojure CSS css
ditaa ditaa Graphviz dot
Emacs Lisp emacs-lisp gnuplot gnuplot
Haskell haskell Javascript js
LaTeX latex Ledger ledger
Lisp lisp MATLAB matlab
Mscgen mscgen Objective Caml ocaml
Octave octave Org-mode org
Oz oz Perl perl
Plantuml plantuml Python python
R R Ruby ruby
Sass sass Scheme scheme
GNU Screen screen shell sh
SQL sql SQLite sqlite

言語特有の文書が存在する場合があります。文書が存在する場合、それはhttp://orgmode.org/worg/org-contrib/babel/languagesにて見つけられます。

どの言語を評価するかの管理には、関数org-babel-load-languagesを使います(デフォルトではemacs-lispのみを評価可能です)。 この変数を設定するには、カスタマイズのインターフェースを使うか、以下のコードをemacsの設定ファイルに追加します。

次のコードでは、emacs-lispを評価させないように設定し、Rのコードブロックを評価させるように設定しています。
     (org-babel-do-load-languages
      'org-babel-load-languages
      '((emacs-lisp . nil)
        (R . t)))

上記方法に加えて、require関数を使って関連するelispファイルをロードすることでも、言語のサポートを有効にできます.

以下は、clojureコードブロックの評価を有効にしています。
     (require 'ob-clojure)


Next: , Previous: 言語, Up: ソースコードとの連携

14.8 ヘッダー引数

ヘッダー引数を通してコードブロックの機能を設定できます。このセクションではヘッダー引数の使い方を概説した後に、各ヘッダー引数の詳細について説明します。


Next: , Previous: ヘッダー引数, Up: ヘッダー引数

14.8.1 ヘッダー引数の利用

ヘッダー引数の値は6通りの方法で設定できます。以下の説明で、後に説明されるものほど、個別の設定として優先されます。


Next: , Previous: ヘッダー引数の利用, Up: ヘッダー引数の利用
システム全体のヘッダー引数

変数org-babel-default-header-argsをカスタマイズすることで、システム全体にわたるヘッダー引数の値を指定できます。

     :session    => "none"
     :results    => "replace"
     :exports    => "code"
     :cache      => "no"
     :noweb      => "no"

例えば、次の例ではヘッダー引数:nowebの初期値をyesと設定できます。この設定は、ソースコードブロックを評価する時にデフォルトの設定として:nowebの参照記号を展開します。

     (setq org-babel-default-header-args
     (cons '(:noweb . "yes")
     (assq-delete-all :noweb org-babel-default-header-args)))


Next: , Previous: システム全体のヘッダー引数, Up: ヘッダー引数の利用
各言語のヘッダー引数

それぞれの言語用にデフォルトのヘッダー引数を定義できます。オンラインhttp://orgmode.org/worg/org-contrib/babelで閲覧可能な言語特有の文書を見て下さい。


Next: , Previous: 各言語のヘッダー引数, Up: ヘッダー引数の利用
バッファ全体のヘッダー引数

Org-modeファイルにある特別な行を使って、バッファ全体にわたるヘッダー引数を設定できます。その行では、キーワード#BABEL:に続いて、普通のヘッダー引数の構文を使って指定された一連のヘッダー引数があります。

次の例は、session*R*と設定し、バッファ内にあるコードブロック毎のresultssilentと指定しています。この設定により、全ての(コードブロックが)同一のセッションで実行されること、そして、結果はそのバッファに挿入されないことを確かにしています。

     #+BABEL: :session *R* :results silent


Next: , Previous: バッファ全体のヘッダー引数, Up: ヘッダー引数の利用
Orgプロパティでのヘッダー引数

ヘッダー引数はOrg-modeのプロパティから読み出すこともできます(プロパティの表記法を見て下さい)。プロパティはバッファ全体もしくは見出しごとの単位で設定できます。例えば、バッファ内の全コードブロックのヘッダー引数を設定するには、以下のようにします。

     #+property: tangle yes

デフォルトのヘッダー引数を設定するためにプロパティを使う場合、プロパティは継承(関係)に沿って参照されます。したがって、以下の見出しに属するサブツリー内の全てのコードブロックでは、ヘッダー引数:cacheの値はデフォルトでyesとなります:

     * アウトラインの見出し
     :PROPERTIES:
     :cache:    yes
     :END:

このように設定されたプロパティは、org-babel-default-header-argsに設定されたプロパティを上書きします。Org-modeドキュメント内のプロパティを設定する関数org-set-propertyを使うのが便利です。キーバインドはC-c C-x pです。


Next: , Previous: Orgプロパティでのヘッダー引数, Up: ヘッダー引数の利用
コードブック指定のヘッダー引数

コードブロックのレベルでヘッダー引数に値を割り当てる方法が最も一般的です。#+begin_src行の一部として、ヘッダー引数とその値とを並べることによって設定されます。このように設定されたプロパティは変数org-babel-default-header-argsとプロパティとして設定されたヘッダー引数との両方を上書きします。以下に示す例では、実行結果をバッファに挿入しないように、ヘッダー引数:resultssilentと設定し、加えてHTMLやLaTeXへのエクスポート時にコードブロックの本文だけが保存されるように、ヘッダー引数:exportscodeと設定しています。

     #+source: factorial
     #+begin_src haskell :results silent :exports code :var n=0
     fac 0 = 1
     fac n = n * fac (n-1)
     #+end_src

同様に、インラインのコードブロックにヘッダー引数を設定することも可能です:

     src_haskell[:exports both]{fac 5}

コードブロックのヘッダー引数を複数行にわたって記述できます。=#+header:=もしくは=#+headers:=の行を、コードブロックの前に記述するか、名前付きコードブロックの名前とコード本文との間に記述します。

名前を付けていないコードブロックに複数行のヘッダー引数を設定します:

      #+headers: :var data1=1
      #+begin_src emacs-lisp :var data2=2
        (message "data1:%S, data2:%S" data1 data2)
      #+end_src
     
      #+results:
      : data1:1, data2:2

名前を付けたコードブロックに複数行のヘッダー引数を設定します:

        #+source: named-block
        #+header: :var data=2
        #+begin_src emacs-lisp
          (message "data:%S" data)
        #+end_src
     
        #+results: named-block
        : data:2


Previous: コードブック指定のヘッダー引数, Up: ヘッダー引数の利用
関数実行時のヘッダー引数

一番個別のレベルにおいて、Babelライブラリのためのヘッダー引数もしくは関数の呼び出し行は、下に示す2つの例のように設定できます。#call:行の構造についての更なる情報は、コードブロックの評価を参照してください。

以下は、ヘッダー引数:exports results#+call:行の評価に適用します。

     #+call: factorial(n=5) :exports results

以下は、ヘッダー引数:session specialをコードブロックfactorialの評価に適用します。

     #+call: factorial[:session special](n=5)


Previous: ヘッダー引数の利用, Up: ヘッダー引数

14.8.2 ヘッダー引数の指定

以下のヘッダー引数が定義されています:


Next: , Previous: ヘッダー引数の指定, Up: ヘッダー引数の指定
14.8.2.1 :var

ヘッダー引数:varはコードブロックへ引数を渡すために使われます。コードブロックに含まれている引数を受け取る方法は、言語によって異なります;これらは、言語固有の文書にて説明されています。しかし、引数を指定する構文はすべての言語で共通です。引数に渡される値は、定数(リテラル値)、Org-modeのテーブルとliteral exampleブロックからの値、他のコードブロックの結果、あるいはEmacs Lispのコードです。—Emacs Lispについては、以下の見出し“Emacs Lisp evaluation of variables”を見て下さい。

これらの値は配列のようにインデックス化できます—以下の見出し“indexable variable values”を見て下さい。

ヘッダー引数:varを使ってコードブロックへ引数を渡すには、以下の構文を使います。

     :var name=assign

ここで、assignは以下のフォームのどれかをとることができます。

Alternate argument syntax(引数を指定する別の構文)

コードブロックの#+source:行を利用するという方法でも引数を指定できます。もしかすると、こちらの方法がより自然かもしれません。以下の例のように、引数はソースの名前に続く括弧「()」の内に、カンマ「,」で分離された形でひとまとめにされています。

     #+source: double(input=0, x=2)
     #+begin_src emacs-lisp
     (* 2 (+ input x))
     #+end_src
Indexable variable values(インデックス化可能な変数の値)

変数の“indexing”インデックス化によって割り当てられた変数の一部分を参照できます。インデックス(添え字)は0から始まります。インデックスが負の値の場合、それは要素の最後から逆順に数え上げたものです。インデックスが「,」で分割されているとき、後続する部分のそれぞれが、次に深いネスティング(入れ子構造)にインデックス化するか、値の次元にインデックス化します。:hlines:colnames、そして:rownamesのようなヘッダー引数と関連する他のテーブルが変更される前に、このインデックス化が行われることに注意して下さい。次の例では、テーブルexample-table1行目の最後のセルを変数dataに割り当てています:

     #+results: example-table
     | 1 | a |
     | 2 | b |
     | 3 | c |
     | 4 | d |
     
     #+begin_src emacs-lisp :var data=example-table[0,-1]
       data
     #+end_src
     
     #+results:
     : a

:で区切られた2つの整数を使うことで、変数の範囲(行や列?)を参照できます。この場合、包括的な範囲を参照します。例えば、以下ではexample-tableの中央3行をdataに割り当てています。

     #+results: example-table
     | 1 | a |
     | 2 | b |
     | 3 | c |
     | 4 | d |
     | 5 | 3 |
     
     #+begin_src emacs-lisp :var data=example-table[1:3]
       data
     #+end_src
     
     #+results:
     | 2 | b |
     | 3 | c |
     | 4 | d |

加えて、インデックスが空の場合もしくは単一文字*の場合のどちらでも、全ての範囲すなわち0:-1を意味していると解釈されます。次の例では、1列目すべてが参照されます。

     #+results: example-table
     | 1 | a |
     | 2 | b |
     | 3 | c |
     | 4 | d |
     
     #+begin_src emacs-lisp :var data=example-table[,0]
       data
     #+end_src
     
     #+results:
     | 1 | 2 | 3 | 4 |

コードブロックの結果をテーブルの様にインデックス化できます。どんな次元数でもインデックス化できます。以下の例に示すように、次元はそれぞれカンマで分割されます。

     #+source: 3D
     #+begin_src emacs-lisp
       '(((1  2  3)  (4  5  6)  (7  8  9))
         ((10 11 12) (13 14 15) (16 17 18))
         ((19 20 21) (22 23 24) (25 26 27)))
     #+end_src
     
     #+begin_src emacs-lisp :var data=3D[1,,1]
       data
     #+end_src
     
     #+results:
     | 11 | 14 | 17 |
Emacs Lisp evaluation of variables(Emacs Lispによる変数の評価)

変数の値を初期化するときにEmacs Lispのコードを使えます。変数の値が(, [, ' もしくは `で始まる場合、変数はEmacs Lispとして評価され、その評価結果を変数の値として代入されます。次の例では、この評価を使ってOrg-modのファイル名を確かにコードブロックへ渡しています—元のOrg-file内でヘッダー引数が間違いなく評価されるということに注意して下さい。コードブロックで評価する場合そのような保証はありません。

     #+begin_src sh :var file-name=(buffer-file-name) :exports both
       wc -w $file
     #+end_src

テーブルやリストから読み出された値はEmacs Lispとして評価されないことに注意して下さい。以下はその例です。

     #+results: table
     | (a b c) |
     
     #+headers: :var data=table[0,0]
     #+begin_src perl
       $data
     #+end_src
     
     #+results:
     : (a b c)


Next: , Previous: var, Up: ヘッダー引数の指定
14.8.2.2 :results

ヘッダー引数:resultsには3つのクラスがあります。コードブロックでは、クラス毎に1個のオプションだけを付与できます。

Collection

以下のオプションは、コードブロックから結果を収める方法を指定します。どちらかのオプションしか指定できません。

Type

以下のオプションは相互に排他的で、コードブロックの結果のタイプを返します。デフォルトでは、結果の値によって、テーブルかスカラーのどちらかが結果として挿入されます。

Handling

以下のresultのオプションは、結果が1度集められた後に何が起こるかを示しています。


Next: , Previous: results, Up: ヘッダー引数の指定
14.8.2.3 :file

コードブロックの結果を保存する外部ファイルを指定するために、ヘッダー引数:fileを使います。コードブロックの評価の後に、そのファイルへのOrg-modeスタイルのリンク[[file:]](リンクのフォーマットを参照)が、Org-modeのバッファに挿入されます。R, gnuplot, dotやditaaなどの言語では、ヘッダー引数:fileを扱う特別な機能が用意されています。その機能とは、指定されたファイルへアウトプットを保存するために、必要な定型のコードでコードブロックの本文を囲むというものです。これは、コードブロックの画像出力を特定のファイルに保存する場合に、しばしば役立ちます。

:fileに対する引数は、ファイルのパスを示す文字列、もしくは、次の2つの文字列からなるリスト、のどちらかでなくてはなりません。2つの文字列からなるリストとは、第1要素はファイルのパス、第2要素はそのリンクの説明から構成されます。


Next: , Previous: file, Up: ヘッダー引数の指定
14.8.2.4 :dirとリモートでの実行

ヘッダー引数:fileがアウトプットするファイルのパスを指定する一方で、:dirはコードブロックを実行する間のデフォルトのディレクトリを指定します。指定されない場合、現在のバッファに関連するディレクトリが使われます。つまり、:dir pathを一時的に与えることは、M-x cd pathでカレントディレクトリを変えるだけで:dirを設定しない場合と同じ効果を持ちます。水面下では、:dirがEmacsの変数default-directoryを変更しているだけなのです。

:dirを使う場合、アウトプットするファイルを相対パス(例 :file myfile.jpgもしくは:file results/myfile.jpg)で与えなければなりません。その場合、与えたパスはデフォルトディレクトリに対する相対パスとして解釈されます。

つまり、ホームディレクトリ内のWorkフォルダでプロット(グラフを描画)したい場合、次のように使えます。

     #+begin_src R :file myplot.png :dir ~/Work
     matplot(matrix(rnorm(100), 10), type="l")
     #+end_src
リモートでの実行

trampのファイル構文を使う事でリモートマシン上のディレクトリを指定できます。その場合、リモートマシン上でコードが評価されます。1つの例です。

     #+begin_src R :file plot.png :dir /dand@yakuba.princeton.edu:
     plot(1:10, main=system("hostname", intern=TRUE))
     #+end_src

従来通りローカルのOrg-modeのバッファにテキストの結果が返されますが、リモートマシン上のリモートディレクトリを基準とした相対パスにファイルのアウトプットが作成されます。リモートのファイルへのOrg-modeのリンクが生成されます。

従って、上の例では、リモートマシン上にグラフが生成され、Org-modeバッファには次の形式のリンクが挿入されます。

     [[file:/scp:dand@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]

trampのおかげで、:dirがEmacsの変数default-directoryの値をセットした後すぐに、この機能を使えます。これらの機能を正しく動かすためには、XEmacsやversion23より前のGNU Emacsを使っている人はtrampを別にインストールする必要があるかもしれません。

更なるポイント


Next: , Previous: dir, Up: ヘッダー引数の指定
14.8.2.5 :exports

ヘッダー引数:exportsは、Org-modeファイルのHTMLエクスポートやLaTeXエクスポートに、何を含めるかを指定します。


Next: , Previous: exports, Up: ヘッダー引数の指定
14.8.2.6 :tangle

ヘッダー引数:tangleは、ソースコードファイルを抽出したファイルにコードブロックを含めるか否かを指定します。


Next: , Previous: tangle, Up: ヘッダー引数の指定
14.8.2.7 :mkdirp

抽出(tangle)されたファイルの親ディレクトリが無いときに、ヘッダー引数:mkdirpを使って親ディレクトリを作成できます。ディレクトリ作成を許可するにはこのヘッダー引数をyesと設定し、ディレクトリ作成を禁止するにはnoと設定します。


Next: , Previous: mkdirp, Up: ヘッダー引数の指定
14.8.2.8 :comments

デフォルトの設定では、コードブロックをソースコードへと抽出するときに、コードブロック本文に既に存在するコメントだけを挿入します。抽出されたコードファイルに追加のコメントを挿入するには、ヘッダー引数:commentsを以下のように設定します。


Next: , Previous: comments, Up: ヘッダー引数の指定
14.8.2.9 :no-expand

デフォルトの設定では、抽出の際に関数org-babel-expand-src-blockによってコードブロックが展開されます。これには、:varを使って変数を割り当てる(varを参照してください)効果に加えて、“noweb”の参照記号(Nowebでの参照の構文を参照してください)をそのターゲットで置き換える効果があります。この動作を無効にするためにヘッダー引数:no-expandを使います。


Next: , Previous: no-expand, Up: ヘッダー引数の指定
14.8.2.10 :session

ヘッダー引数:sessionは、読み取られた言語のにセッションを開始します。セッションでは、状態は保存されます。

デフォルトでは、セッションは開始されません。

ヘッダー引数:sessionに渡された文字列が、セッション名になります。これにより、読み取られた言語のそれぞれについて並列セッションを実行可能です。


Next: , Previous: session, Up: ヘッダー引数の指定
14.8.2.11 :noweb

ヘッダー引数:nowebはコードブロック内における“noweb”スタイル(Nowebでの参照の構文を参照のこと)の参照記号を展開する方法について管理しています。このヘッダー引数は次の3つyesnoもしくは tangleから1つを選ぶことができます。

Nowebの行頭部分

現在、Nowebの挿入機能は、<<reference>>の行頭部分の後ろで実行されます。この振る舞いは次の例で説明されます。nowwebの参照記号<<example>>がSQLのコメントの構文の後で見つかったため、nowebの参照記号を展開して、それぞれの行をコメントとして挿入します。

このコードブロックは:

     -- <<example>>

次のように展開されます:

     -- これは
     -- exampleの複数行の本文です

次の事に注意して下さい。改行を含まないnowebのテキスト置換ではこの変化の影響を受けません。したがって、インラインのnowebの参照記号を使う事も可能です。


Next: , Previous: noweb, Up: ヘッダー引数の指定
14.8.2.12 :cache

ヘッダー引数:cacheはコードブロックの評価結果をバッファ内に保存するか(=キャッシュするか)を管理します。これにより、変化していないコードブロックを再度評価することを避けられます。このヘッダー引数は:yesあるいはnoのどちらかの値をとります。

コードブロックの引数である変数の値が変化した場合でも、コードブロックのキャッシュは変化として検知します。この場合、キャッシュは無効となり、そのコードブロックは再度実行されます。次の例では、randomの結果が前回実行時から変化しない限り、callerは実行されません。

      #+srcname: random
      #+begin_src R :cache yes
      runif(1)
      #+end_src
     
      #+results[a2a72cd647ad44515fab62e144796432793d68e1]: random
      0.4659510825295
     
      #+srcname: caller
      #+begin_src emacs-lisp :var x=random :cache yes
      x
      #+end_src
     
      #+results[bec9c8724e397d5df3b696502df3ed7892fc4f5f]: caller
      0.254227238707244


Next: , Previous: cache, Up: ヘッダー引数の指定
14.8.2.13 :sep

Org-modeから外部のファイルへ表形式の結果を書き出す時に、ヘッダー引数:sepを使って区切り文字のを管理できます。この機能は、次のどちらかの場合に使用できます。まずは、コードブロック上でC-c C-oにキーバインドされた関数org-open-at-pointを呼び出して、表形式で書かれたコードブロックの結果を開く場合です。もう1つは、コードブロックの結果を外部ファイルのヘッダー引数へ出力する場合です(fileを参照してください。)。

デフォルトでは、:sepが設定されていない場合、出力されるテーブルはタブで区切られています。


Next: , Previous: sep, Up: ヘッダー引数の指定
14.8.2.14 :hlines

テーブルは頻繁に1本以上の水平な線、すなわちhlines(訳者注:_h_orizontal _lines_)を使って表現されます。コードブロックの引数:hlinesの値としてyesもしくは noを使えます。デフォルトではnoと設定されています。


Next: , Previous: hlines, Up: ヘッダー引数の指定
14.8.2.15 :colnames

ヘッダー引数:colnamesは、yesnoそして宣言していない場合のnilを値として持てます。デフォルトではnilに設定されています。


Next: , Previous: colnames, Up: ヘッダー引数の指定
14.8.2.16 :rownames

ヘッダー引数:rownamesyesもしくはnoを値として持つ事ができ、デフォルトではnoと設定されています。


Next: , Previous: rownames, Up: ヘッダー引数の指定
14.8.2.17 :shebang

ヘッダー引数:shebangに文字列の値(例えば :shebang "#!/bin/bash")を設定することで、コードブロックを抽出した全てのファイルの1行目にその文字列を挿入し、抽出されたファイルのパーミッションを実行可能と設定します。


Previous: shebang, Up: ヘッダー引数の指定
14.8.2.18 :eval

ヘッダー引数:evalを使って、特定のコードブロックの評価を制限できます。:evalは“never”と“query”の2つの値をとれます。:eval neverはコードブロックが評価されないことを確かにします。 これは危険なコードブロックを評価することを防ぐのに便利です。:eval queryと設定すると、変数org-confirm-babel-evaluateの値に関係なく、コードブロックを実行する度に確認のダイアログがでます。


Next: , Previous: ヘッダー引数, Up: ソースコードとの連携

14.9 評価の結果

結果の取り扱われ方は、セッションが呼び出されたかに依存することに加えて、:results valueもしくは:results outputが使われているかに依存します。(table possibilies:の意味が分からない)次のテーブルでは全ての場合を表形式にまとめました。ヘッダー引数resultsが取り得る完全なリストは、resultsを見て下さい。

Non-session Session
:results value 最後の式の値 最後の式の値
:results output STDOUTの内容 インタプリタの出力をつなげたもの

以下に注意すること::results valueと設定することで、適切な場合は、:sessionとnon-sessionの両方の結果はテーブル(文字列もしくは数字からなる1次元もしくは2次元のベクトル)の形でOrg-modeに返されます。

14.9.1 Non-session

14.9.1.1 :results value

デフォルトの設定です。外部の言語で書かれた関数定義のコードを囲むことと、内部でその関数を評価することによってその値が得られます。それゆえ、コードはその関数の本文であるかのように書かなければなりません。特に、Pythonはreturn文が存在しない限り自動的に関数から返り値を返しませんので、Pythonでは多くの場合に‘return’文が必要なことに注意してください。

コンテクストを評価する4つの方法の中で、これは関数定義にコードが自動的に囲まれるただ一つの方法です。

14.9.1.2 :results output

外部プロセスとしてのインタープリタにコードが渡され、標準出力ストリームの内容がテキストとして返されます。(いくつかの言語ではエラー出力のストリームも含まれます; これは今後の課題です。)

14.9.2 Session

14.9.2.1 :results value

Emacsのインタラクティブな下位プロセスとして実行しているインタープリタにコードが渡されます。返される結果は、そのインタープリタが最後に評価した結果です。 (これは言語固有の方法で得られています:PythonやRubyでの変数_の値であり、Rでの.Last.valueの値です)。

14.9.2.2 :results output

Emacsのインタラクティブな下位プロセスとして実行しているインタープリタにコードが渡されます。返される結果は、そのインタープリタからの一連の(テキストの)アウトプットを結合したものです。もし外部プロセスとして実行しているインタラクティブでないインタープリタに同じコードが送られるなら、STDOUTへと送られるであろうものと全く同じである必要は無いことに注意して下さい。例えば、次の2つのブロックを比べて下さい:

     #+begin_src python :results output
      print "hello"
      2
      print "bye"
     #+end_src
     
     #+resname:
     : hello
     : bye

non-sessionモードでは、`2'はプリントされず、表示されません。

     #+begin_src python :results output :session
      print "hello"
      2
      print "bye"
     #+end_src
     
     #+resname:
     : hello
     : 2
     : bye

しかし:sessionモードでは、インタラクティブなインタープリタは入力`2'を受け取り、その値`2'を表示します。(実際には、ここでは他のprint文は不要です)。


Next: , Previous: 評価の結果, Up: ソースコードとの連携

14.10 Nowebでの参照の構文

“noweb” (http://www.cs.tufts.edu/~nr/noweb/を参照のこと)による文芸的プログラミングのシステムは、名付けられたコードブロックがよく知られたNowebの構文を使って参照されることを許しています:

     <<code-block-name>>

コードブロックが抽出されるか評価されるとき、“noweb”参照記号を展開するかしないかは、ヘッダー引数:nowebの値に依存します。もし:noweb yesなら、Nowebの参照記号が展開されてから評価が行われます。もし:noweb noなら、デフォルトの設定ですが、参照記号は展開されずに評価が行われます。

注意:ある言語内で正しいコードが破壊されないように、デフォルトの値を:noweb noと設定しています。例えばRubyでは、<<arg>>が構文的に有効な構成要素です。もしあなたが使っている言語で<<arg>>が構文的に有効な構成要素でない場合に、デフォルトの値を検討してください。


Next: , Previous: Nowebでの参照の構文, Up: ソースコードとの連携

14.11 キーバインドと便利関数

多くの一般のOrg-modeのキー操作が、コンテクストに応じて再定義されています。

コードブロックの中では、以下のキーバインドが有効になっています。

C-c C-c org-babel-execute-src-block
C-c C-o org-babel-open-src-block-result
C-<up> org-babel-load-in-session
M-<down> org-babel-pop-to-session

Org-modeのバッファ内では、以下のキーバインドが有効になっています。

C-c C-v a もしくは C-c C-v C-a org-babel-sha1-hash
C-c C-v b もしくは C-c C-v C-b org-babel-execute-buffer
C-c C-v f もしくは C-c C-v C-f org-babel-tangle-file
C-c C-v g org-babel-goto-named-source-block
C-c C-v h org-babel-describe-bindings
C-c C-v l もしくは C-c C-v C-l org-babel-lob-ingest
C-c C-v p もしくは C-c C-v C-p org-babel-expand-src-block
C-c C-v s もしくは C-c C-v C-s org-babel-execute-subtree
C-c C-v t もしくは C-c C-v C-t org-babel-tangle
C-c C-v z もしくは C-c C-v C-z org-babel-switch-to-session


Previous: キーバインドと便利関数, Up: ソースコードとの連携

14.12 バッチ処理

コマンドラインから関数を呼び出すことができます。このシェルスクリプトは、引数のそれぞれに対してorg-babel-tangleを呼び出します。

あなたのシステムに合わせてパスを設定するように注意してください。

     #!/bin/sh
     # -*- mode: shell-script -*-
     #
     # org-mode でファイルを抽出する
     #
     DIR=`pwd`
     FILES=""
     ORGINSTALL="~/src/org/lisp/org-install.el"
     
     # tangleする必要があるそれぞれの引数をクォーテーションで囲む
     for i in $@; do
         FILES="$FILES \"$i\""
     done
     
     emacs -Q --batch -l $ORGINSTALL \
     --eval "(progn
     (add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
     (add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\"))
     (require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
     (mapc (lambda (file)
            (find-file (expand-file-name file \"$DIR\"))
            (org-babel-tangle)
            (kill-buffer)) '($FILES)))" 2>&1 |grep tangled


Next: , Previous: ソースコードとの連携, Up: Top

15 その他


Next: , Previous: その他, Up: その他

15.1 補完

Emacsは補完無しではEmacsとはいえません,そしてorg-modeはそれが意味をなすたびに使用します.もしあなたがiswitchb- かido-のようなインタフェースを補完のプロンプトとして好むのであれば,あなたはorg-completion-use-iswitchborg-completion-use-ido変数のいずれかを設定することで指定することができます.

Org-modeはバッファ中の補完をサポートします.この種類の補完はミニバッファを活用します.あなたは簡単に数文字をバッファに入力し,補完キーを補完するテキストの右側で押します.

M-<TAB>
ポイント位置での補完
  • 見出しの先頭では,TODOキーワードを補完します.
  • \’の後では,エクスポート機能によりサポートされるTeXのシンボルを補完します.
  • *’の後では,‘[[*find this headline]]’のようにリンクを検索できるように,カレントバッファで見出しを補完します.
  • 見出し中の‘:’の後では,タグを補完します.タグのリストはorg-tag-alist変数(see タグの設定より,もしかすると,バッファ中の‘#+TAGS’オプションでも設定されているかもしれません.)から与えられるか,カレントバッファで使われている全てのタグから動的に生成されます.
  • 見出しの外にある‘:’の後では,プロパティキーを補完します.キーのリストは現在のバッファで使われている全てのキーから動的に構築されます.
  • [’の後では,リンクの省略記法を補完します(see リンクの省略記法).
  • +’の後では,Org-mode向けのファイル固有の設定としてセットする‘TYP_TODO’や‘OPTIONS’のようなスペシャルキーワードを補完します.オプションキーワードが既に補完されているなら,M-<TAB>を再び押すことでこのキーワードの設定の例を挿入します.
  • #+STARTUP: ’の後の行の中では,STARTUPキーワードを補完します,すなわち,はこの行では正しいキーです.
  • 他の場所では,Ispellを用いた辞書補完が行われます.


Next: , Previous: 補完, Up: その他

15.2 簡単なテンプレート

Org-modeは僅かなキーストロークのみによる空の構造の(#+BEGIN_SRC#+END_SRCのような)要素の挿入をサポートします.これはネイティブなテンプレート拡張機構を通じて得られるものです.ここで留意すべきこととして,Emacsは例えばyasnippetのような同じように使うことができるいくつかの他のテンプレート機構を持ちます.

構造要素の挿入には,‘<’をタイプし,続いてテンプレートセレクタと<TAB>をタイプします.補完は上記のキーストロークが単独で行に入力されている場合のみ働きます.

以下のテンプレートセレクタが現在サポートされています.

s #+begin_src ... #+end_src
e #+begin_example ... #+end_example
q #+begin_quote ... #+end_quote
v #+begin_verse ... #+end_verse
c #+begin_center ... #+end_center
l #+begin_latex ... #+end_latex
L #+latex:
h #+begin_html ... #+end_html
H #+html:
a #+begin_ascii ... #+end_ascii
A #+ascii:
i #+include: line

例えば,空の行で"<e"と入力し,その後TABを入力すると,EXAMPLEテンプレートが補完されます.

あなたはorg-structure-template-list変数をカスタマイズすることで追加のテンプレートをインストールすることができます.詳細は変数のdocstringを参照してください.


Next: , Previous: 簡単なテンプレート, Up: その他

15.3 スピードキー

最初のアスタリスクの前のように,カーソルが見出しの先頭にある時,シングルキーはコマンドを実行できるようになっています.org-use-speed-commands変数を設定することでこの機能を有効にします.あらかじめ定義されているコマンドのリストを挙げます.そして,org-speed-commans-user変数にコマンドを追加することもできます.Speed keysは操作や他のコマンドを使うスピードを上げるだけではなく,TTYやキーボードに限界があるモバイル端末上で実行できない,または簡単に実行できないキーに割り当てられたコマンドを実行するための別の可能性を提供します.

コマンドが実行可能かどうかを見るには,機能を有効にして見出しの先頭にカーソルを置いて?を押します.


Next: , Previous: スピードキー, Up: その他

15.4 コードの評価とセキュリティの問題

Org-modeは評価を含むコードのスニペットを使って作業をするためのツールを提供します.

あなたのマシン上でコードが動くことは常にセキュリティのリスクをもたらします.目的のため,またはアクシデントによって良くないコードや悪意のあるコードは実行されます.Org-modeはあなたが明確に実行の許可を与える場合のみそのようなコードを評価するデフォルトの設定を持っていて,そしてカジュアルなユーザーに対してはこれらの機能は予防措置として保つべきです.

そのようなコードを通常用いる人々のために,確認用のプロンプトが表示され,そしてあなたはそれをオフにするかもしれません.これを行うことは可能ですが,あなたはリスクとかかわることを承知しなくてはなりません.

コードの評価は以下に挙げる状況を引き起こします:

ソースコードブロック
ソースコードブロックはエクスポート中かブロック中でC-c C-cを押した時に評価されます.ここで最も重要な事はコードスニペットを含むOrg-modeのファイルがある意味で,実行可能なファイルに似ているということです.それで,あたはそれらに対応し正しいソースのみをEmacsにロードすべきです– あなたがコンピュータ上にインストールしたプログラムのように.

デフォルトのセキュリティ装置を切る変数をカスタマイズする前にあなたがしていることを確かめてください.

— User Option: org-confirm-babel-evaluate

t(これがデフォルトです)の時,ユーザーはコードブロックを評価する前に毎回確認されます.nilの時,ユーザは確認されません.関数をセットすると,それは2つの引数(言語とコードブロックの本体)を伴って呼ばれ,tを返せば尋ね,nilならば尋ねません.

例えば,これは"ditaa"コード(安全性は考慮されています)を確認無しで実行する方法です:

          (defun my-org-confirm-babel-evaluate (lang body)
            (not (string= lang "ditaa")))  ; don't ask for ditaa
          (setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate)

以下のshellelispはリンクしています.
Org-modeはコードを直接評価できる2つのリンクタイプ(see 外部リンク)を持っています.実行されるコードが見えないため,これらのリンクは問題がありえます.
— User Option: org-confirm-shell-link-function

シェルへのリンクを実行するための問い合わせを行う関数.

— User Option: org-confirm-elisp-link-function

Emacs Lispへのリンクを実行するための問い合わせを行う関数.


表中の式
表中の式(see スプレッドシート)はcalcインタプリタでもEmacs Lispインタプリタでも実行できるコードです.


Next: , Previous: コード評価の安全性, Up: その他

15.5 カスタマイズ

Org-modeをカスタマイズするために使われる変数は180以上あります.マニュアルの圧縮のため,私はここで変数の説明はしません.変数のカスタマイズの構造化された概要はM-x org-customizeで見ることができます.もしくは,Org->CustomizationからBrowse Org Groupを選択してください.多くの設定はバッファに特別な行を書くこと(see バッファ内での変数制御)でそのファイル中で有効にすることができます.


Next: , Previous: カスタマイズ, Up: その他

15.6 バッファ中での設定の要約

Org-modeはファイル単位で設定を定義するために,バッファ内の特別な行を使用します.これらの行は‘#+’に続くキーワードとコロン,そして設定を定義する語句でできています.いくつかの設定用語句は同じ行に書くことも,分けて書くこともできます.これらの設定はマニュアルを通じて説明されており,ここには要約を載せています.バッファ中の行を編集した後は,カーソル位置の変更をすぐに反映するためにC-c C-cを押しれください.そうでなければ,新しいEmacsのセッションでファイルを再び開いた時のみ反映されます.

#+ARCHIVE: %s_done::
この行はこの行はアジェンダファイルのアーカイブ場所を設定します.次の‘#+ARCHIVE’行まで,もしくはファイルの末尾までの全ての行で適用されます.最初の行はまた,それより前の全てのエントリにも適用されます.関係する変数はorg-archive-locationです.
#+CATEGORY:
この行はアジェンダファイルのカテゴリを設定します.カテゴリは次の‘#+CATEGORY’行か,ファイル末尾までの全ての行で適用されます.また,それより前の全ての行にも適用されます.
#+COLUMNS: %25ITEM .....
カラムビューのデフォルトフォーマットを設定します.COLUMNSプロパティが適用されていない箇所でカラムビューが呼ばれた場合,このフォーマットが適用されます.
#+CONSTANTS: name1=value1 ...
テーブル式の中で使われる定数として,ファイルローカルな値を設定します.この行はローカル変数org-table-formula-constants-localを設定します.グローバルバージョンはorg-table-formula-constantsです.
#+FILETAGS: :tag1:tag2:tag3:
ファイル中のエントリトップレベルエントリを含めたエントリが引き継ぐタグを設定します.
#+DRAWERS: NAME1 .....
ファイルローカルな引き出しのセットを設定します.関係するグローバル変数がorg-drawersです.
#+LINK: linkword replace
これらの行初はリンクの省略記法を指定します.See リンクの省略記法. 関係する変数はorg-link-abbrev-alistです.
#+PRIORITIES: highest lowest default
これらの行は優先順位の上限と初期値を設定します.3つ全てが,AからZまでの文字か,0から9までの数字のどれかでなくてはいけません.最も高い優先順位は最も低い優先順位より低いASCIIの数値を持つ必要があります.
#+PROPERTY: Property_Name Value
この行は現在のバッファ中のエントリがデフォルトで引き継ぐ値を設定します.与えられたプロパティの値を指定するのに,最も便利です.
#+SETUPFILE: file
この行はバッファ内の設定を持つファイルを定義します.通常は,これは完全に無視されます.バッファのオプションの設定行をパースされた時のみ,バッファにそれらが含まれていればこのファイルのコンテンツはパースされます.特に,ファイルは内部設定の別のOrg-modeファイルとすることができます.カーソルをこの行に置き,C-c 'を押すことであなたはこのファイルを開くことができます.
#+STARTUP:
この行はOrg-modeのファイルが開かれた時にに使われるオプションを設定します.

最初のオプションセットはアウトラインツリーの初期表示を設定します.グローバルなデフォルトの設定に関係する変数はorg-startup-foldedで,初期値はtで,それはすなわちoverviewです.

          overview         トップレベルの見出しのみ
          content          全ての見出し
          showall          全てのエントリを畳み込まない
          showeverything   コンテンツの引き出しも表示する

動的な仮想インデントは変数org-startup-idented132によって制御されます.

          indent     start with org-indent-mode turned on
          noindent   start with org-indent-mode turned off

それから,開いたファイルの表を整列させつオプションがあります.これはファイルがナローされた表を含む時に役に立ちます.関係する変数はorg-startup-align-all-tablesで,デフォルトではnilです.

          align      align all tables
          noalign    don't align tables on startup

ファイルを開いたとき,インライン画像は自動的に表示されます.関係する変数はorg-startup-with-inine-imagesで,ファイルを開いた際の遅延を避けるためにデフォルトではnilになっています.

          inlineimages   show inline images
          noinlineimages don't show inline images on startup

TODOアイテムの完了と再開のログを取ることとその感覚はこれらのオプションによって設定することが可能です(変数org-log-doneorg-log-note-clock-outorg-log-repeatを参照してください).

          logdone            アイテムにDONEマークがついたとき,タイムスタンプを記録します
          lognotedone        ノートにDONEマークがついたとき,タイムスタンプを記録します
          nologdone          アイテムにDONEマークがついたとき,タイムスタンプを記録しません
          logrepeat          アイテムが再開されたとき,時刻を記録します
          lognoterepeat      アイテムが再開されたとき,ノートをを記録します
          nologrepeat        アイテムが再開されたとき,記録を行わいません
          lognoteclock-out   時間測定が終了したとき,ノートを記録します
          nolognoteclock-out 時間測定が終了したとき,ノートを記録しません
          logreschedule      スケジューリングが変わったとき,タイムスタンプを記録します
          lognotereschedule  スケジューリングが変わったとき,ノートを記録します
          nologreschedule    スケジューリングが変わったとき,記録しません
          logredeadline      デッドラインが変更されたとき,タイムスタンプを記録します
          lognoteredeadline  デッドラインが変更されたとき,ノートを記録します
          nologredeadline    デッドラインが変更されたとき,記録しません
          logrefile          リファイル時にタイムスタンプを記録します
          lognoterefile      リファイル時にノートを記録します
          nologrefile        リファイル時に記録しません

ここは,インデントされたアウトラインの見出しを隠すオプションです.関係する変数はorg-hide-leading-starsorg-odd-levels-onlyで,デフォルトの設定は両方ともnil(showstarsoddeven)を意味します.

          hidestars  全てのヘッドラインの「*」を見えなくします
          showstars  全てのヘッドラインの「*」を見えるようにします
          indent     virtual indentation according to outline level
          noindent   アウトラインのレベルに一致する仮想インデントを行いません
          odd        奇数のアウトラインレベル(1,3……)のみ
          oddeven    全てのアウトラインレベル

タイムスタンプ(org-put-time-stamp-overlaysorg-time-stamp-overlay-formats変数)のカスタムフォーマットオーバレイを切り替えます,

          customtime カスタマイズされたタイムフォーマットで覆います

以下のオプションは表計算(constants-unit-system変数)に影響を与えます.

          constcgs   constants.el should use the c-g-s unit system
          constSI    constants.el should use the SI unit system

脚注の設定を行うには,以下のキーワードを使います.関係する変数はorg-footnote-define-inlineorg-footnote-auto-labelorg-footnote-auto-adjustです.

          fninline    脚注のインラインを定義します
          fnnoinline  分割されたセクションでの脚注を定義します
          fnlocal     最初の言及元の近くの脚注を定義しますが,インラインではありません
          fnprompt    脚注ラベルのプロンプト
          fnauto      [fn:1]のようなラベルを自動的に作成します(これがデフォルトです)
          fnconfirm   編集と確認用の自動ラベルを用意します
          fnplain     [1]のようなラベルを自動的に作成します
          fnadjust    自動的に脚注の番号を振り直し,ソートします
          nofnadjust  自動的に番号の振り直しとソートを行いません

開始時にブロックを見えなくするには,これらのキーワードを使います.関連する変数はorg-hide-block-startupです.

          hideblocks   開始時に全ての開始/終了ブロックを見えなくします
          nohideblocks 開始時にブロックを見えなくしません

UTF-8の文字の表示は変数org-pretty-entitiesと以下のキーワードにより制御されます.

          entitiespretty  可能な時,UTF-8の文字を表示します
          entitiesplain   空白にします

#+TAGS: TAG1(c1) TAG2(c2)
これらの行はファイル中の正しいタグと関連するfast tag selectionキーを指定します.関連する変数はorg-tag-alistです.
#+TBLFM:
この行には行上にある表の数式が含まれます.
#+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+DATE:,
#+OPTIONS:, #+BIND:, #+XSLT:,
#+DESCRIPTION:, #+KEYWORDS:,
#+LATEX_HEADER:, #+STYLE:, #+LINK_UP:, #+LINK_HOME:,
#+EXPORT_SELECT_TAGS:, #+EXPORT_EXCLUDE_TAGS:
これらの行はエクスポートするファイルの設定を提供します.詳細についてはエクスポートオプションを参照してください.
#+TODO: #+SEQ_TODO: #+TYP_TODO:
これらの行は現在のファイルでのTODOキーワードとそれらの説明をセットします.関連する変数はorg-todo-keywordsです.


Next: , Previous: バッファ内での変数制御, Up: その他

15.7 「C-c C-c」キーはとても忙しい

Org-modeではC-c C-cキーは多くの目的を持っていて,それはこのマニュアルの中のあちこちに分かれて書かれています.このキーの具体的な機能として,見出しにタグを追加するものがあります(see タグ).他の多くの状況では,“ここを見て,見たものに応じて更新する”というようなものを意味します.これは,異なる文脈でそれが何を意味するかの概要です.


Next: , Previous: 「C-c C-c」キーはとても忙しい, Up: その他

15.8 より見やすいアウトラインビュー

多くの人々はOrg-modeの見出しについている「*」の数が増えたときや見出しの下のテキストがインデントされていないことを不快に感じます.アウトラインの見出しが本当のセクションの見出しの場所で本のように文書を書く時,これは問題ではありませんが,さらに正しい位置のリストアウトライン中では,インデント構造はより見やすくなります.

     * Top level headline             |    * Top level headline
     ** Second level                  |      * Second level
     *** 3rd level                    |        * 3rd level
     some text                        |          some text
     *** 3rd level                    |        * 3rd level
     more text                        |          more text
     * Another top level headline     |    * Another top level headline

もしあなたが少なくともEmacs23.2133とOrg-modeのバージョン6.29を使っているのなら,この主のビューはorg-indent-modeを使って表示する時間を動的に実現できます.このマイナーモードでは,全ての行は必要なスペース134が前について表示されます.見出しはまた追加の「*」が前に置かれていて,それで1レベルにつき2135スペースシフトしてインデントします.全ての見出しの「*」の最後の1個だけはorg-hideフェイス136を使うことで見えなくなります - これについてのさらなる情報は‘2.’を見てください.あなたはorg-indent-modeを有効にするかorg-startup-indented変数で全てのファイルについて設定するか,ファイル毎に独立して設定することができます.

     #+STARTUP: indent

もしあなたがEmacs/Org-modeの古いバージョンでも同じような効果を得たいのであれば,またはもしあなたがプレーンテキストの見た目がEmacsでの表示と同様になるようにスペース文字でインデントしたいのであれば,Org-modeは以下の方法であなたをサポートします:

  1. 見出しの下のテキストのインデント
    以下のように,あなたは各見出しの下のテキストを見出しと同じ位置にインデントできます.
              *** 3rd level
                  more text, now indented
    

    Org-modeは段落詰め,行の折り返し,構造の編集,適切なインデントの保存と適合と同時にこれをサポートします.

  2. 先頭の「*」を隠す
    あなたは先頭の「*」を非表示にするという方法で変更することができます.これを行うグローバルな方法は,org-hide-leading-stars変数を設定するか,以下のようにファイル毎に設定するかです.
              #+STARTUP: hidestars
              #+STARTUP: showstars
    

    「*」を隠した状態だと,ツリーはこうなります:

              * Top level headline
               * Second level
                * 3rd level
                ...
    

    先頭の「*」は本当に空白スペースに置き換えられたわけではなく,それらは文字色を背景色にするorg-hideフェイスによって見えているだけです.もしあなたが白か黒の背景色を使っていないのであれば,あなたはこのフェイスを必要な効果が得られるようにカスタマイズする必要があるでしょう.別の方法として,このフォントは余分な「*」が色を用いて,例えば,白い背景色の上にgray90を使うことで目に見えなくするというものがあります.

  3. あなたが全ての偶数レベルをスキップし,1,3,5といった奇数レベルのみを使い,効果的にある見出しレベルから次137に行くために2つの「*」を追加するのであれば,物事はより見やすくなります.この方法で,私達はこのセクションの冒頭で見られるアウトラインビューを得ます.構造の編集とこの慣例を正しく操作するエクスポートコマンドを作成すうために,org-odd-levels-only変数を設定するか,各ファイルに以下のような行を追加します.
              #+STARTUP: odd
              #+STARTUP: oddeven
    

    あなたはM-x org-convert-to-odd-levels RETによりOrg-modeのファイルを1レベル1スターから1レベル2スターに変換することができます.逆の操作は.M-x org-convert-to-oddeven-levelsです.


Next: , Previous: アウトラインの「*」を取り除く, Up: その他

15.9 Org-modeをtty端末で使う

Org-modeはとても多くのコマンドを用意しているため,デフォルトではOrg-modeのコアコマンドの多くは,例えばカーソルキー(<left>,<right>,<up>,<down>)や<TAB>,<RET>,とりわけ<Meta>や<Shift>といったモディファイヤキーと一緒に使われるキーなど,通常tty端末では扱えないキーにバインドされています.特別なキーが利用できない時にtty端末上でこれらのコマンドにアクセスするには,以下の別バインディングを用いることができます.下記のtty端末バインディングはおそらく扱いにくいでしょう; カスタマイズしたバインディングの方が以下のいくつかのものよりよいことに気づくかもしれません.

デフォルト 代替 1 スピードキー 代替 2
S-<TAB> C-u <TAB> C
M-<left> C-c C-x l l <Esc> <left>
M-S-<left> C-c C-x L L
M-<right> C-c C-x r r <Esc> <right>
M-S-<right> C-c C-x R R
M-<up> C-c C-x u <Esc> <up>
M-S-<up> C-c C-x U U
M-<down> C-c C-x d <Esc> <down>
M-S-<down> C-c C-x D D
S-<RET> C-c C-x c
M-<RET> C-c C-x m <Esc> <RET>
M-S-<RET> C-c C-x M
S-<left> C-c <left>
S-<right> C-c <right>
S-<up> C-c <up>
S-<down> C-c <down>
C-S-<left> C-c C-x <left>
C-S-<right> C-c C-x <right>


Previous: TTYキー, Up: その他

15.10 他のパッケージとの関係

Org-modeはGNU Emacsの世界に生きていて,他のコードと様々な方法で連携します.


Next: , Previous: 連携, Up: 連携

15.10.1 Org-modeと強調して動くパッケージ

calc.el by Dave Gillespie
Org-modeはテーブル(see スプレッドシート)中の表計算関数の実装にCalcパッケージを使います.Org-modeはCalcが適切にインストールされている場合,設定中に自動で読み込まれるcalc-eval関数を探し,Calcが利用できることを確認します.Emacs22現在で,CalcはEmacsに最初から組込まれています.2つのパッケージの連携の別の方法はCalcを組込み計算に使うことです.See Embedded Mode.
constants.el by Carsten Dominik
テーブル関数中(see スプレッドシート)で,自然定数や単位に名前を使うことができるようになります.あなたが自分でorg-table-formula-constants変数に定数を定義する代わりに,多くの定数や単位を定義しているconstantsパッケージをインストールすることで,あなたは‘Mega’に‘M’のような表現を使うことができるようになります.このパッケージのバージョン2.0が必要で,http://www.astro.uva.nl/~dominik/Toolsから利用できます.Org-modeは設定中に自動で読み込まれるconstants-get関数をチェックします.constants.elのインストール説明を参照してください.
cdlatex.el by Carsten Dominik
Org-modeはLaTeXフラグメントをOrg-modeファイルに効率的に入力するためにCDLaTeXパッケージを活用できます.CDLaTeXモードを参照してください.
imenu.el by Ake Stenhoff and Lars Lindberg
Imenuはファイル中のアイテムのインデックスへのアクセスメニューを提供します.Org-modeはImenuをサポートします—インデックスを得るために,あなたは以下のようにする必要があります:
          (add-hook 'org-mode-hook
                    (lambda () (imenu-add-to-menubar "Imenu")))

デフォルトではインデックスは2レベルの深さです—あなたはorg-imenu-depthオプションを用いることで深さを変更できます.

remember.el by John Wiegley
Org-modeはこのパッケージをキャプチャに使用します,しかし,もはやそうではありません.
speedbar.el by Eric M. Ludlam
Speedbarはファイルとファイル中のインデックスを表示するためのスペシャルフレームを作成するパッケージです.Org-modeはSpeedbarをサポートし,SpeedbarからOrg-modeファイルへ直接繋げます.Speedbarフレームで<コマンドを使うことでファイルまたはサブツリーへのアジェンダコマンドの範囲を制限します.
table.el by Takaaki Ota
自動的な行の折り返し,列,行の広がり,調整を伴う複雑なASCIIテーブルはOta Takaaki(http://sourceforge.net/projects/table,もしくはEmacs22に含まれています)によるEmacsのテーブルパッケージを用いることで作成可能です.Org-modはこれらのテーブルを認識し,適切にセクスポートします.Org-modeの別の機能による干渉のために,あなたは不幸にもこれらのテーブルをバッファ中で直接編集することができません.代わりに,あなたはこのテーブルの編集のためにソースコードスニペットに似たC-c 'コマンドを使う必要があります.
C-c '     (org-edit-special)
table.elのテーブルを編集します.カーソルがtable.elのテーブル上の時動作します.
C-c ~     (org-table-create-with-table.el)
table.elのテーブルを挿入します.ポイント位置が既にテーブルなら,このコマンドはtable.elのフォーマットとOrg-modeのフォーマットで相互変換します.これが可能なことと制限については,org-convert-tableコマンドのドキュメントを参照してください.
table.elはEmacs22以降のEmacsでは内蔵されています.
footnote.el by Steven L. Baur
Org-modeはこのパッケージが提供する数字の脚注を認識します.しかしながら,Org-modeは自身の脚注(see 脚注)もサポートしているため,footnote.elを使う必要はありません.


Previous: 協調, Up: 連携

15.10.2 Org-modeとの衝突に繋がるパッケージ

Emacs23では,Shiftキーと組み合わせたカーソルの動きを開始するかリージョンを広げるためのshift-selection-modeがデフォルトで有効になっています.カーソルがそのような位置にある場合,Org-modeでのタイムスタンプ,TODOキーワード,プライオリティ,アイテムbulletタイプの変更とS-<cursor>コマンドは衝突します.デフォルトでは,S-<cursor>コマンドは特別なコンテクスト以外では何も起きませんが,org-support-shift-select変数をカスタマイズすることができます.Org-modeはスペシャルコマンドが適用される特別なコンテクストの外で(i)使用することによりShift選択を提供しようとし,また(ii)アクティブなリージョンを拡張することによっても特別なコンテクストを通してカーソルが移動します.
CUA.el by Kim. F. Storm
リージョンの選択と拡張について,Org-modeでのキーバインディングは(pc-select-modes-region-modeと同様に)CUAモードで使われるS-<cursor>と衝突します.実際,前の段落を見れば分かりますが,Emacs23はshift-selection-modeの形でこのビルトインを持ちますます.あなたがEmacs23を使っているのであれば,まず間違いなくこの目的のための別のパッケージは使いたくないでしょう.しかし,Org-modeでの作業中に別のパッケージにこれらのキーを渡すことを選ぶのであれば,org-replace-disputed-keys変数を設定してください.設定したとき,Org-modeはOrg-modeファイルとアジェンダバッファ(日付の選択を除きます)中で以下のキーバインディングを変えるでしょう.
          S-UP      ⇒  M-p             S-DOWN     ⇒  M-n
          S-LEFT    ⇒  M--             S-RIGHT    ⇒  M-+
          C-S-LEFT  ⇒  M-S--           C-S-RIGHT  ⇒  M-S-+

はい,残念ながら覚えることがより困難です.もしあなたが他の代わりのキーを持ちたいのであえれば,org-disputed-keys変数を見てください.

yasnippet.el
Org-modeはTABキー("\t"の代わりに.[tab]をバインドします)をバインドするこのキーでYASnippetsのアクセスを優先します.以下のコードはこの問題を修正します:
          (add-hook 'org-mode-hook
                    (lambda ()
                      (org-set-local 'yas/trigger-key [tab])
                      (define-key yas/keymap [tab] 'yas/next-field-group)))

yasnippetの最新のバージョンはOrg-modeと相性がよくありません.上記のコードが衝突を修正しないなら,以下の関数を定義してください:

          (defun yas/org-very-safe-expand ()
                 (let ((yas/fallback-behavior 'return-nil)) (yas/expand)))

それから,Org-modeに実行すべき新しい関数を教えてくさい:

          (add-hook 'org-mode-hook
                    (lambda ()
                        (make-variable-buffer-local 'yas/trigger-key)
                        (setq yas/trigger-key [tab])
                        (add-to-list 'org-tab-first-hook 'yas/org-very-safe-expand)
                        (define-key yas/keymap [tab] 'yas/next-field)))

windmove.el by Hovav Shacham
このパッケージも,S-<cursor>キーを使用し.そしてCUAモードが適用されている状態の段落で全てが書かれます.もし,Org-modeがS-<cursor>上に特別な関数を持たない場所であなたがwindmove関数を有効にしたいのであれば,設定に以下を追加します:
          ;; Make windmove work in org-mode:
          (add-hook 'org-shiftup-final-hook 'windmove-up)
          (add-hook 'org-shiftleft-final-hook 'windmove-left)
          (add-hook 'org-shiftdown-final-hook 'windmove-down)
          (add-hook 'org-shiftright-final-hook 'windmove-right)

viper.el by Michael Kifer
ViperはC-c /を使い,それ故にOrg-modeのorg-sparse-treeコマンドに対応しているキーを使えないようにします.あなたはこのコマンドに別のキーを割り当てるか,viper-vi-global-user-mapでキーを上書きする必要があります:
          (define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)


Next: , Previous: その他, Up: Top

Appendix A ハッキング

この付録では、ユーザーがOrg-modeの機能を拡張できる幾つかの特徴を紹介します。


Next: , Previous: ハッキング, Up: ハッキング

A.1 フック

Org-modeには、機能を追加するためのフック変数が数多くあります。ハッキングに関するこの付録では、それらの使い方を説明します。全フックの完全なリストと説明文は Worg project によって維持管理されており、http://orgmode.org/worg/org-configs/org-hooks.phpにて見つけられます。


Next: , Previous: フック, Up: ハッキング

A.2 アドオンパッケージ

様々な人によって膨大な数のアドオンパッケージが書かれました。これらのパッケージはEmacsの一部ではありませんが、投稿されたパッケージとして独自のリリースで配布されており、Org-modeのホームページ http://orgmode.orgにて入手できます。投稿されたパッケージのリストとその説明文は Worg project によって http://orgmode.org/worg/org-contrib/にて維持管理されています。


Next: , Previous: アドオンパッケージ, Up: ハッキング

A.3 ハイパーリンクのタイプの追加

Org-modeにはビルトインのハイパーリンク形式が多数用意されています(see ハイパーリンク)。新しいタイプのリンクを追加したい場合、Orgは追加するためのインターフェスを用意します。例となるファイル org-man.elを見て下さい。これは UnixのmanページをEmacsで表示するために、‘[[man:printf][printfのmanページ]]’というリンクを生成するサポートを作成します:

     ;;; org-man.el - Org-modeでmanページのリンクをサポートする
     
     (require 'org)
     
     (org-add-link-type "man" 'org-man-open)
     (add-hook 'org-store-link-functions 'org-man-store-link)
     
     (defcustom org-man-command 'man
       "manのページを表示するためのEmacsのコマンド。"
       :group 'org-link
       :type '(choice (const man) (const woman)))
     
     (defun org-man-open (path)
       "パス(PATH)にあるmanpageを開きます。
     パスはコマンドmanに渡せる内容でなければなりません。"
       (funcall org-man-command path))
     
     (defun org-man-store-link ()
       "manページへのリンクを保存します。"
       (when (memq major-mode '(Man-mode woman-mode))
         ;; これはmanページなので、リンクを作成します。
         (let* ((page (org-man-get-page-name))
                (link (concat "man:" page))
                (description (format "Manpage for %s" page)))
           (org-store-link-props
            :type "man"
            :link link
            :description description))))
     
     (defun org-man-get-page-name ()
       "バッファ名からページ名を抽出します。"
       ;; `Man-mode' と `woman-mode' の両方で動作します。
       (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
           (match-string 1 (buffer-name))
         (error "このmanページへのリンクを作成できません")))
     
     (provide 'org-man)
     
     ;;; org-man.el ends here

以下を.emacsに加えて、この新しいタイプのリンクを有効にします。

     (require 'org-man)

そのファイルを一つずつ順番に検討して、何をするのか見てみましょう。

  1. (require 'org)を実行してorg.elが読み込まれたことを確認します。
  2. 次の行ではorg-add-link-typeを呼び出して、新しいタイプのリンクを接頭辞 ‘man’ で定義します。またこの呼び出しでは、そのようなリンクを辿るために呼び出される関数の名前も含まれています。
  3. 次の行では、manページを表示したバッファ内にて有用なリンクをC-c lで保存できるように、関数をorg-store-link-functionsに追加します。

ファイルの残りは必要な変数と関数を定義しています。最初に、manページの表示にどのEmacsのコマンドを使うかを決める変数のカスタマイズがあります。2つのオプション、manwoman があります。次に、リンクを辿る関数が定義されています。リンクのパスは引数として渡されます — この場合、リンクのパスは単にmanコマンドのトピックです。この関数はmanページの表示にorg-man-commandの値を呼び出します。

最後に、関数org-man-store-linkが定義されています。C-c lでリンクを保存する時に、リンクを作成するためにこの関数が呼び出されます。関数は、このバッファのタイプでリンク作成がサポートされているかどうかを最初に判断します; 変数major-modeの値をチェックして判断します。サポートされていない場合、関数は終了して、nilの値を返します。サポートされている場合、バッファ名からmanのトピックを取得して、文字列 ‘man:’ の後に繋げることで、リンクを生成します。次に、コマンドorg-store-link-propsを呼び出して、:type:linkプロパティを設定します。任意で:descriptiionプロパティを設定できます。これは、後にC-c C-lでOrg-modeのバッファにリンクが挿入される時のリンクの説明のデフォルト値を用意します。

新しいタイプのリンクを正しく設定できると、C-c C-lでリンクを挿入するときの特別な機能(例えば 補完機能)のサポートを実装する関数org-PREFIX-complete-linkを定義できます。そのような関数は引数をとらず、接頭辞がついたリンク全体を返します。


Next: , Previous: ハイパーリンクのタイプの追加, Up: ハッキング

A.4 状況依存のコマンド

Org-modeでは、文脈に依存して動作が変わるコマンドが幾つかあります。最も重要な例はC-c C-c(see 「C-c C-c」キーはとても忙しい)です。また、M-cursorM-S-cursor キーもこの性質を持っています。

アドオンにとって特別な文脈を検知し、文脈に沿って適切に実行する関数を準備することによって、アドオンはこの機能を活用できます。ここに例として Dan Davisonの org-R.elがあります。このファイルはRプログラミング言語138に基づいてコマンドを実行できます。このパッケージでは、特別な文脈とは#+R:#+RR:で始まる行のことです。

     (defun org-R-apply-maybe ()
       "org-Rの文脈なら検知して、Rのコマンドを実行します。"
       (if (save-excursion
             (beginning-of-line 1)
             (looking-at "#\\+RR?:"))
           (progn (call-interactively 'org-R-apply)
                  t) ;; 処置したと信号を送ります
         nil)) ;; 処置しなかったと信号を送ります
     
     (add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)

関数は最初にそのような行にカーソルがあるのかをチェックします。そうである場合、org-R-applyが呼び出されて関数は処置したと信号を送るためにtを返し、そしてC-c C-cは他の文脈を探すことを止めます。もし関数がそこですべきことが無いと分かった場合は、他の同じような関数が試せるようにnilを返します。


Next: , Previous: 状況依存のコマンド, Up: ハッキング

A.5 任意のシンタックスによる表やリスト

Orgtblモードを任意のバッファでマイナーモードとして使えるため、LaTeXのような特定言語のテーブルでモードを動作させる機能の要望がよく出されます。しかし、通常の方法でこれを実装するのは極めて難しく、結局悪夢のような設定となってしまい、Orgtblモードのテーブルエディタによって得られる単純さのほとんどを失ってしまうでしょう。

この付録では、別の方法を説明します。Orgtblモード本来のフォーマットでテーブルを保ち(もとのテーブル)、その表を正しいシンタックスへと変換するカスタム関数を使い、(目的のテーブルを)正しい場所に配置します。これはユーザーに変換する関数を書く負担をかけますが、まさにフレキシブルな方法が可能となります。

Bastienはリストに対して同じ機能をOrgstructモードに加えました。リストを編集したり構造化するOrg-modeの機能を使うには、orgstruct-modeをオンにして、そこで当該リストを別のフォーマット(HTML, LaTeX もしくは Texinfo)へとエクスポートしてください。


Next: , Previous: 任意の構文によるテーブル, Up: 任意の構文によるテーブル

A.5.1 ラジオテーブル

ターゲットテーブルの場所を定義するには、Orgtblモードが見つけ出せるマジックワード含んだ2行のコメントを最初にカレントモード内で作成します。Orgtblモードはその2行の間に変換されたテーブルを挿入します。前に何が在ったかは考慮せずに置き換えます。例えば:

     /* BEGIN RECEIVE ORGTBL table_name */
     /* END RECEIVE ORGTBL table_name */

ソーステーブル(元のテーブル)のすぐ上に、変換する方法と挿入する場所をOrgtblモードに知らせる特別な行を付け加えます。例えば:

     #+ORGTBL: SEND table_name translation_function arguments....

table_nameはそのテーブルの参照名で、それは変換結果を挿入する行でも使われます。translation_functionは変換するLispの関数です。加えて、その行の最後では、(keyとvalueを交互においた)引数のリストを含むことができます。引数はプロパティのリストとして解釈するために、変換する関数(translation function)に渡されます。変換する関数(translation function)が呼び出される前に、いくつかの基本的なパラメーターは既に認識され、影響を受けています。

:skip N
テーブルの最初のN行を飛ばして読み進みます。このパラメーターは、行を分ける横線をカウントします。
:skipcols (n1 n2 ...)
飛ばすべき列のリストです。もしもテーブルに計算用にマークされた列がある場合、同じようにに自動的に無視されます。列を除去した後で変換する関数がテーブルを見るので、そこには更に列があったとは知る由もないことに注意して下さい。

残る1つの問題は、ファイルの通常動作を妨げずに、バッファ内のソーステーブルを保つ方法です。例えば、C言語のファイルやLaTeXファイルを編集している場合です。いくつかの方法があります:


Next: , Previous: ラジオテーブル, Up: 任意の構文によるテーブル

A.5.2 LaTeXでのラジオテーブルの例

LaTeXでソーステーブルを囲む最良の方法は、comment.styで提供されるcomment環境を使うことです。文書のヘッダーに\usepackage{comment}と書くことで有効になります。OrgtblモードでM-x orgtbl-insert-radio-tableとすると、テーブルのスケルトンを挿入できます139。 テーブル名を確認されますので、‘salesfigures’と入力します。 そして以下のテンプレートを得ました:

     % BEGIN RECEIVE ORGTBL salesfigures
     % END RECEIVE ORGTBL salesfigures
     \begin{comment}
     #+ORGTBL: SEND salesfigures orgtbl-to-latex
     | | |
     \end{comment}

#+ORGTBL: SENDの行は、関数orgtbl-to-latexを使ってテーブルをLaTeXへ変換し、salesfiguresの名前で受け取る場所に設置するようにと、Orgtblモードに指示しています。これからテーブルに記入します—スプレッドシートの機能を自由に使ってください140:

     % BEGIN RECEIVE ORGTBL salesfigures
     % END RECEIVE ORGTBL salesfigures
     \begin{comment}
     #+ORGTBL: SEND salesfigures orgtbl-to-latex
     | 月  | 日数 | 販売数 | 一日あたり |
     |-----+------+--------+------------|
     | 1月 |   23 |     55 |        2.4 |
     | 2月 |   21 |     16 |        0.8 |
     | 3月 |   22 |    278 |       12.6 |
     #+TBLFM: $4=$3/$2;%.1f
     % $ (font-lock 色分けをうまく動作させるための余分なドル記号、脚注参照)
     \end{comment}

入力し終わり、テーブルの中でC-c C-cと押下すると、目印となる2行の間に変換されたテーブルが挿入されます。

さて、列の文字揃えを制御したいなどの理由から、テーブルのヘッダーを書きたいとします。この場合は次のことを確認します。テーブルを変換する関数がソーステーブルの最初の2行を飛ばすことと、接合部として動作すること、すなわち ターゲットテーブルのヘッダーとフッターを生成しないことです:

     \begin{tabular}{lrrr}
     月 & \multicolumn{1}{c}{日数} & 販売数 & 一日あたり \\
     % BEGIN RECEIVE ORGTBL salesfigures
     1月 & 23 & 55 & 2.4 \\
     2月 & 21 & 16 & 0.8 \\
     3月 & 22 & 278 & 12.6 \\
     % END RECEIVE ORGTBL salesfigures
     \end{tabular}
     %
     \begin{comment}
     #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
     | 月  | 日数 | 販売数 | 1日あたり |
     |-----+------+--------+-----------|
     | 1月 |   23 |     55 |       2.4 |
     | 2月 |   21 |     16 |       0.8 |
     | 3月 |   22 |    278 |      12.6 |
     #+TBLFM: $4=$3/$2;%.1f
     \end{comment}

LaTeXへ変換する関数orgtbl-to-latexは既にOrgtblモードの一部です。tabular環境を使ってテーブルをタイプセットし、横線に\hlineで印を付けます。加えて、以下のパラメーターを解釈します(see 変換関数も参照してください):

:splice nil/t
tのとき、tabular環境で囲まずに、テーブルの本文だけを返します。デフォルトではnilです。
:fmt fmt
各フィールドを囲むのに使われるフォーマットで、%sにはフィールドの元の値が入っています。例えばドルマークで囲む場合には、:fmt "$%s$"と書けます。また、列の番号とフォーマットというプロパティのリストにもなります。例えば:fmt (2 "$%s$" 4 "%s\\%%")と書けます。文字列の変わりに、1つの引数を持つ関数を使えます; その関数は書式設定された文字列を返します。
:efmt efmt
指数表記で数値を出力する時に使います。仮数部と指数部を挿入するため、この形式では%sが2回出現します。例えば"%s\\times10^{%s}"。デフォルトでは"%s\\,(%s)"です。これも列数と書式設定のリスト、例えば:efmt (2 "$%s\\times10^{%s}$" 4 "$%s\\cdot10^{%s}$")となり得ます。値にefmtが適用された後に、fmtも適用されます。fmtと同様に、文字列の代わりに引数2つの関数を使えます。


Next: , Previous: LaTeXの例, Up: 任意の構文によるテーブル

A.5.3 変換関数

Orgtblモードには幾つかの組み込み変換関数があります: orgtbl-to-csv (カンマ区切り), orgtbl-to-tsv (タブ区切り) orgtbl-to-latex, orgtbl-to-html そして orgtbl-to-texinfoです。orgtbl-to-html141を除いた、これら全ての関数は包括的な変換関数orgtbl-to-genericを使います。例えば、orgtbl-to-latexそれ自体はとても短い関数でtabular環境の列の定義を計算したり、幾つかのフィールドセパレータや行セパレータを定義してそれから処理を包括的な変換関数へと渡しています。ここに完全なコードがあります:

     (defun orgtbl-to-latex (table params)
       "OrgtblモードのテーブルをLaTeXに変換します。"
       (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
                                    org-table-last-alignment ""))
              (params2
               (list
                :tstart (concat "\\begin{tabular}{" alignment "}")
                :tend "\\end{tabular}"
                :lstart "" :lend " \\\\" :sep " & "
                :efmt "%s\\,(%s)" :hline "\\hline")))
         (orgtbl-to-generic table (org-combine-plists params2 params))))

ご覧のように、関数に渡されたプロパティ(変数PARAMS)が、関数の中で新しく定義されたプロパティ(変数PARAMS2)と結合されています。関数に渡されたもの(すなわち‘ORGTBL SEND’行でセットされたプロパティ)が優先されます。よって、もしLaTeX 変換関数を使いたけれども、行の最後はデフォルトの‘\\’の代わりに‘\\[2mm]’としたいなら、デフォルトの設定をこのように上書きできます

     #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"

新しい言語に対して、LaTeX変換関数とのアナロジーから自分で変換関数を書くか、もしくは、包括的な変換関数を直接使うこともできます。例えば、もしある言語では、テーブルが始まるときは‘!BTBL!’、終わるときには‘!ETBL!’、そしてテーブル行は‘!BL!’で始まり、‘!EL!’で終わり、フィールドセパレータはタブだとしたら、このように(1行だけで!)包括的な変換関数を呼び出すことができます:

     #+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
                                   :lstart "!BL! " :lend " !EL!" :sep "\t"

関数によって理解されるパラメーターの完全なリストのために、関数orgtbl-to-genericの説明文をチェックしてください。そして、それらの1つずつをorgtbl-to-latexorgtbl-to-texinfoや、包括的な変換関数を使った何か他の関数に渡せることを覚えて下さい。

もちろん包括的な変換関数では行えない複雑な事を処理する全く新しい関数を書くこともできます。変換関数は2つの引数を持ちます。1つ目の引数はテーブル、行のリスト、それぞれの行のシンボルコードhline もしくはフィールドのリストです。2つめの引数はプロパティリストで、‘#+ORGTBL: SEND’行で指定された全てのパラメーターを含みます。関数は書式設定されたテーブルを含む1つの文字列を返します。もし一般に有用な変換関数を書いた場合、他の人があなたの仕事から恩恵に預かれるように、どうかemacs-orgmode@gnu.orgに投稿して下さい。


Previous: 変換関数, Up: 任意の構文によるテーブル

A.5.4 ラジオリスト

ラジオリストを送受信する方法は、ラジオテーブル(see ラジオテーブル)を送受信する方法と全く同じです。ラジオテーブル(ラジオリストのtypo?)に関しては、関数org-list-insert-radio-listを呼び出して、HTMLモード、LaTeXモードそしてTexinfoモードにラジオリストを挿入できます。

ここではラジオテーブルとの違いを説明します:

これはLaTeXの例です。LaTeXファイルに以下が書いてあるとします:

     % BEGIN RECEIVE ORGLST to-buy
     % END RECEIVE ORGLST to-buy
     \begin{comment}
     #+ORGLST: SEND to-buy org-list-to-latex
     - 新しい家
     - 新しいコンピュータ
       + 新しいキーボード
       + 新しいマウス
     - 新しい生活
     \end{comment}

新しい家の上で`C-c C-c'とタイプすると、LaTeXに変換されたリストが目印の2行の間に挿入されます。


Next: , Previous: 任意の構文によるテーブル, Up: ハッキング

A.6 ダイナミックブロック

Org-modeの文書は動的なブロックを含むことができます。これらのブロックはユーザーが書いた関数によって更新される印のついた領域です。そのようなブロックの良い例は、C-c C-x C-r(see 作業に費やした時間の計測)というコマンドで挿入した時計のテーブル(クロックテーブル)です。

動的なブロックは、そのブロックに名前を指定し、そしてそのブロックの内容を実行する機能のためのパラメーターを指定する「BEGIN-END」構造によって囲まれている必要があります。

     #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
     
     #+END:

動的なブロックを更新するには以下のコマンドを使用します。

C-c C-x C-u     (org-dblock-update)
その場所での動的なブロックを更新します。C-x C-u
C-u C-c
C-x C-u現在のファイルの全ての動的なブロックを更新します。

動的なブロックを更新するということは、すべての「BEGIN」と「END」の間のテキストを取り除き、「BEGIN」の行に書かれているパラメーターを解析し、それからそのブロックのための特定の書き出し用の関数を呼び出して新しい内容を書き込むことを意味します。もしもその書き出し用の関数の中で元の中身を使いたい場合は、追加のパラメーターである:contentを使えます。

myblockという名前のブロックに対する書き出し用の関数はorg-dblock-write:myblockです。BEGINの行にて与えられるパラメーターのプロパティリストを単一パラメータとして受け取ります。ブロックの一例として、ブロックを更新する関数が最後に実行されたのはいつかを記録します:

     #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
     
     #+END:

対応するブロックへの書き出し用の関数は、このようになっています:

     (defun org-dblock-write:block-update-time (params)
        (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
          (insert "ブロックの最終更新日時は: "
                  (format-time-string fmt (current-time)))))

もしもすべての動的なブロックが常に最新のものに更新されるようにしたいならば、関数org-update-all-dblocksをフック、例えば変数before-save-hookに追加します。org-update-all-dblocksorg-mode内ではないバッファの中では何もしないように書かれています。

org-narrow-to-blockを使って、(他のブロックの様に)現在のバッファを現在の動的なブロックへとナローイングできます。


Next: , Previous: ダイナミックブロック, Up: ハッキング

A.7 特別なアジェンダビュー

Org-modeでは、以下のアジェンダビューによって選択されたものを絞り込む特別なフック関数を用意しています: todo, alltodo, tags, tags-todo, tags-tree。検索でマッチする度に、実際にアジェンダビューでマッチしたかを確認したり、もしマッチしなければどれくらい飛ばすのかを、関数で指定できます。全てのアジェンダビューに適用されるようにグローバルな条件を設定でき、それは変数org-agenda-skip-function-globalに格納されます。通常は、変数org-agenda-skip-functionを使って、このような定義を特定のカスタムサーチに適用します。

プロジェクトのツリーのどこかにWAITINGというタグを含むプロジェクトのリストを作成する場合を考えてみましょう。ツリーの見出しには、プロジェクトを定義するTODOのキーワード「PROJECT」でマークされているとします。この場合、キーワードのPROJECTでTODOを検索し、プロジェクトのサブツリーにWAITINGのタグが無ければ検索でマッチしてもスキップしたいとします。

これを達成するには、サブツリーをタグで検索する関数を書かなければなりません。もしそのタグが見つかったら、そのマッチはスキップされるべきではないと示すために、その関数はnilを返さなければなりません。もしそのようなタグが無ければ、そこから検索し続けるということを示すために、そのサブツリーの終端の場所を返さなくてはなりません。

     (defun my-skip-unless-waiting ()
       "waitingでないツリーをスキップします"
       (let ((subtree-end (save-excursion (org-end-of-subtree t))))
         (if (re-search-forward ":waiting:" subtree-end t)
             nil          ; タグが見つかったので、スキップしません
           subtree-end))) ; タグが見つからないので、サブツリーの最後から検索を再開します

今からこの関数をアジェンダのカスタムコマンドで使えます。例えばこうなります:

     (org-add-agenda-custom-command
      '("b" todo "PROJECT"
        ((org-agenda-skip-function 'my-skip-unless-waiting)
         (org-agenda-overriding-header "waiting (待ち)状態のプロジェクト: "))))

関数org-agenda-overriding-headerを使って、アジェンダビューで意味のある見出しに変更したことにも注意して下さい。

カスタム検索を作成するには、あるレベルの制限を設けた検索を基づくのが一般的な方法です。自作の検索関数で全てのエントリーを検索したい場合は、単に‘LEVEL>0142を検索した後に、必要なエントリを選択してください。

変数org-agenda-skip-functionにLispフォームを渡すこともできます。具体的に言うと、例えばこのように関数org-agenda-skip-entry-ifと関数org-agenda-skip-subtree-ifとを使えます:

'(org-agenda-skip-entry-if 'scheduled)
現在のエントリがスケジューリングされている場合、それをスキップします。
'(org-agenda-skip-entry-if 'notscheduled)
現在のエントリがスケジューリングされていない場合、それをスキップします。
'(org-agenda-skip-entry-if 'deadline)
現在のエントリがデッドラインを設定されている場合、それをスキップします。
'(org-agenda-skip-entry-if 'scheduled 'deadline)
現在のエントリがデッドラインを設定されているかもしくはスケジューリングされている場合、それをスキップします
'(org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
現在のエントリのTODOのキーワードがTODOもしくはWAITINGの場合、それをスキップします。
'(org-agenda-skip-entry-if 'todo 'done)
現在のエントリのTODOのキーワードがDONEとマークされている場合、それをスキップします。
'(org-agenda-skip-entry-if 'timestamp)
現在のエントリが何かしらのタイムスタンプを持っている場合、それをスキップします。タイムスタンプはデッドラインかスケジューリングが考えられます。
'(org-agenda-skip-entry 'regexp "regular expression")
現在のエントリの中で正規表現「regular expression」にマッチした場合、それをスキップします。
'(org-agenda-skip-entry 'notregexp "regular expression")
現在のエントリの中で正規表現「regular expression」にマッチしない場合、それをスキップします。
'(org-agenda-skip-subtree-if 'regexp "regular expression")
2つ上と同じですが、サブツリー全体をチェックしてスキップします。

従って特別な関数を定義しなかったとしても、WAITINGがあるプロジェクトの検索をこのように書くこともできました:

     (org-add-agenda-custom-command
      '("b" todo "PROJECT"
        ((org-agenda-skip-function '(org-agenda-skip-subtree-if
                                     'regexp ":waiting:"))
         (org-agenda-overriding-header "waiting (待ち)状態のプロジェクト: "))))


Next: , Previous: 特別なアジェンダビュー, Up: ハッキング

A.8 アジェンダ情報の抽出

Org-modeは、コマンドラインからEmacsのバッチモードでアジェンダの情報にアクセスするコマンドを用意しています。 この抽出された情報はプリンタに直接送ることも可能ですし、更にデータを処理させるプログラムに読み込ませることも可能です。1つ目のコマンドは関数org-batch-agendaであり、アジェンダビューを作成し、それをASCIIテキストとしてSTDOUTへと送ります。コマンドはパラメーターとして1つの文字列をとります。文字列の長さが1のとき、org-agenda-custom-commandsにあなたが設定したコマンドの1つが使われます。基本的に、C-c aの後にはどんなキーも使えます。例えば、現在のTODOリストを直接印刷するなら、このように使えます

     emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr

パラメーターが2文字以上の文字列の場合、tags/TODOの検索に使われます。例えば、地元でのショッピングリスト(‘shop’というタグが付いていて、‘NewYork’というタグを含んでいない全てのアイテム)を印刷するには、このように使えます

     emacs -batch -l ~/.emacs                                      \
           -eval '(org-batch-agenda "+shop-NewYork")' | lpr

このように、その場でパラメーターを変えることもできます:

     emacs -batch -l ~/.emacs                                      \
        -eval '(org-batch-agenda "a"                               \
                 org-agenda-span month                             \
                 org-agenda-include-diary nil                      \
                 org-agenda-files (quote ("~/org/project.org")))'  \
        | lpr

これは30日のアジェンダを作成します。情報は、Org-modeのファイル~/org/projects.orgだけに制限され、~/diary(日誌)ファイルでさえ含まれません。

もっと洗練された方法でアジェンダのデータを処理したい場合は、アジェンダのアイテム毎に値をカンマで区切られたリストを作成するorg-batch-agenda-csvというコマンドを使えます。アウトプットの各行にはカンマで区切られたいろいろなフィールドがあります。行内のフィールドは以下の通りです:

     category     アイテムのカテゴリーです
     head         TODOキーワード、TAGSそしてPRIORITYを除いた見出しです
     type         アジェンダのタイプは、以下が考えられます
                     todo               TODO検索で選ばれた
                     tagsmatch          tags検索で選ばれた
                     diary              diaryからインポートされた
                     deadline           デッドラインを設定された
                     scheduled          スケジューリングされた
                     timestamp          タイムスタンプで選ばれたアポイントメント
                     closed             その日付にcloseされたエントリ
                     upcoming-deadline  デッドラインが近づいていると警告している
                     past-scheduled     その日付より前にスケジューリングされたアイテム, 原文:forwarded scheduled item.
                     block              エントリが日付のブロックを持っていて日付を含む
     todo         もしあれば、TODOのキーワード
     tags         継承したものも含めた全てのtags。コロンで区切られている。
     date         2007-2-14のような基準日
     time         15:00-16:50のような時間
     extra        追加のプラニング情報の文字列
     priority-l   もし与えられていれば優先順位の文字
     priority-n   計算された数字の優先度

タイムスタンプ(すなわちデッドラインを設定された/スケジューリングされた)がそのアイテムのセクションをleadする場合にのみTimeもしくはdateが与えられます。

このようなCSVリストは後処理のスクリプトでとても使いやすいです。例のPerlプログラムは、Emacs/Org-modeからTODOリストを取得して、前にチェックボックスを挿入して、全てのアイテムを出力します。

     #!/usr/bin/perl
     
     # 実行するEmacsのコマンドを定義します
     $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
     
     # 実行してアウトプットを取得します
     $agenda = qx{$cmd 2>/dev/null};
     
     # 全ての行についてループします
     foreach $line (split(/\n/,$agenda)) {
       # それぞれの値を取得します
       ($category,$head,$type,$todo,$tags,$date,$time,$extra,
        $priority_l,$priority_n) = split(/,/,$line);
       # 処理して出力します
       print "[ ] $head\n";
     }


Next: , Previous: アジェンダ情報の抽出, Up: ハッキング

A.9 プロパティAPIを使う

プロパティを扱うために使用できる関数を説明します。

— Function: org-entry-properties &optional pom which

ポイントかマーカー(point-or-marker POM)の位置でのエントリのプロパティを全て取得します。
これには、TODOキーワード, tags, デッドラインのtime文字列, スケジューリングのtime文字列, 計測のtime文字列, エントリ内で更に定義されているプロパティが含まれます。返り値は連想リストです。プロパティのキーが何度も使われた場合は、キーは複数回出現します。
POMはnilとなり得ます。その場合は現在のエントリが使われます。WHICHがnilもしくは`all'の場合、全てのプロパティを取得します。WHICHが`special'もしくは`standard'の場合、部分集合(subclass)を取得します。

— Function: org-entry-get pom property &optional inherit

ポイントかマーカー(point-or-marker POM)の位置でのエントリーのプロパティ PROPERTY の値を取得します。デフォルトでは、そのエントリーで局所的に定義されたプロパティのみを調べます。もしINHERITがnon-nilかつエントリーがプロパティを持っていない場合、階層のより高いレベルをチェックします。もしINHERITがシンボルselectiveである場合、継承を使います。また、継承を使うのは、継承のためのプロパティをorg-use-property-inheritanceの設定が選んだときに限ります。

— Function: org-entry-delete pom property

ポイントかマーカー(point-or-marker POM)の位置のエントリーからプロパティPROPERTYを削除します。

— Function: org-entry-put pom property value

ポイントかマーカー(point-or-marker POM)の位置のエントリにプロパティPROPERTYの値VALUEをセットします。

— Function: org-buffer-property-keys &optional include-specials

カレントバッファにある全てのプロパティのキーを取得します。

— Function: org-insert-property-drawer

ポイントの位置にプロパティの引き出し(drawer)を挿入します。

— Function: org-entry-put-multivalued-property pom property &rest values

ポイントかマーカー(point-or-marker POM)のプロパティPROPERTYを値VALUESにセットします。値VALUESは文字列のリストでなければなりません。それらはスペースを区切り文字として連結されます。

— Function: org-entry-get-multivalued-property pom property

プロパティPROPERTYの値を、値がスペースで区切られたリストとして扱い、文字列のリストを返します。

— Function: org-entry-add-to-multivalued-property pom property value

プロパティPROPERTYの値を、値がスペースで区切られたリストとして扱い、このリストの中に値VALUEがあることを確認します。

— Function: org-entry-remove-from-multivalued-property pom property value

プロパティPROPERTYの値を、値がスペースで区切られたリストとして扱い、このリストの中に値VALUEがないことを確認します。

— Function: org-entry-member-in-multivalued-property pom property value

プロパティPROPERTYの値を、値がスペースで区切られたリストとして扱い、このリストの中に値VALUEがあるかをチェックします。

— User Option: org-property-allowed-value-functions

特定のプロパティに許可された値を提供する関数へのフックです。その関数はプロパティの名前を単一の引数として受け取り、許可された値の単純なリストを返します。‘:ETC’がその値の1つである場合、その値を補完の候補として使いますが、他の値も入力することができます。もし関数がプロパティと関係無い場合には、関数はnilを返します。


Previous: プロパティAPIを使う, Up: ハッキング

A.10 マッピングAPIを使う

Org-modeは一定の基準を満たす全てのエントリーを探すために、洗練されたマッピング機能を持っています。アジェンダビューを作成するために内部でこの機能を使われていますが、エントリのそれぞれもしくは選択されたエントリに対して任意の関数を実行するためにAPIも使われます。

— Function: org-map-entries func &optional match scope &rest skip

範囲SCOPEの内でMATCHにマッチして選択された各見出しで関数FUNCを呼び出します。

FUNCは関数かLispのフォームです。関数は引数なしですが、見出しの始まりと終わりのカーソル位置とともに呼び出されます。関数への全ての返り値は、リストとして集められて返されます。

save-excursionフォームの中でFUNCを呼び出されるので、ポイントを保存する必要がありません。評価の後に、カーソルは(処理しているエントリの)行末に移動し、検索を続行します。ある条件では、この方法では希望する結果を得られないかも知れません。例えば、もし現在の(サブ)ツリーを削除した(例えば アーカイブした)場合、次のエントリをスキップすることを意味します。そのような場合、変数`org-map-continue-from'に希望するバッファポジションをFUNCに設定させることで、どこから検索を続けるべきかというポジションを指定できます。

アジェンダビューに使われるとき、MATCHはtags/property/todoにマッチします。繰り返しの間、このクエリにマッチする見出しだけが考慮されます。もしMATCHがnilかtの場合、繰り返しで全ての見出しがチェックされます。

SCOPEはこのコマンドのスコープ(対象とする範囲)を決定します。以下のどれかになり得ます:

          nil     カレントバッファ、 制限があればそれに従う
          tree    現在位置のエントリから始まるサブツリー
          file    カレントバッファ、制限なしで
          file-with-archives
                  カレントバッファ、関連したアーカイブも含む
          agenda  全てのアジェンダファイル
          agenda-with-archives
                  全てのアジェンダフィル、関連したアーカイブファイルも含む
          (file1 file2 ...)
                  ファイルがリスト形式の場合、リスト内の全てのファイルをスキャンします

残りの引数は、スキャナー(読み取る関数?)のスキップ機能の設定として取り扱われます。以下のアイテムをとることができます。

          archive   アーカイブタグ(archive tag)があるツリーをスキップします
          comment   キーワードCOMMENTがあるツリーをスキップします
          function or Lisp form
                    org-agenda-skip-functionの値として使われます。
                    関数であればいつもtを返します、
                    FUNCはは呼び出されません、
                    関数がポイントを置いたままにした位置から検索は続きます

マッピングルーティーンへと与えられる関数はどのような動作もできます。エントリに関する情報を更に集めるためにプロパティAPI(see プロパティAPIを使う)を使えますし、もしくはエントリのメタデータを変更するために使えます。 便利な幾つかの関数を紹介します:

— Function: org-todo &optional arg

エントリのTODO状態を変更します。引数ARGが取り得る多くの値については、関数のドキュメント文字列を見て下さい。

— Function: org-priority &optional action

エントリのプライオリティを変更します。ACTIONが取り得る値についてはこの関数のドキュメント文字列を見て下さい。

— Function: org-toggle-tag tag &optional onoff

現在のエントリのタグTAGをトグルします。onoffのいずれかを設定するということは、タグをトグルするのではなく、onかoffのどちらかであることを確かにします。

— Function: org-promote

現在のエントリを一階層上に引き上げます。

— Function: org-demote

現在のエントリを一階層下へ引き下げます。

これは、現在のファイルの中でTODOTOMORROWを持つ全てエントリを、キーワードUPCOMINDをつけたTODOのエントリへと変化させる簡単な例です。

     (org-map-entries
        '(org-todo "UPCOMING")
        "+TOMORROW" 'file 'archive 'comment)

以下の例では、全てのアジェンダファイルに渡って、TODOのキーワードにWAITINGがあるエントリの数をカウントします。

     (length (org-map-entries t "/+WAITING" 'agenda))


Next: , Previous: ハッキング, Up: Top

Appendix B MobileOrg

MobileOrg はRichard Morelandよって開発されたiPhone/iPod Touch シリーズの携帯端末のためのアプリケーションです。MobileOrgは「リアル」のコンピュータ上にあるOrg-modeシステムのために、オフラインのビューとキャプチャによるサポートを提供します。その機能によって、実際のエントリーがどのように変化したかについて記録することができます。AndroidのユーザーはMatt Jonesよって作成されたMobileOrg Androidのアプリをチェックしてください。

この付録では、MobileOrgで表示されるフォーマットの中でアジェンダビューを作成し、キャプチャされたノートとMobileOrgで変更を、メインのシステムに統合していくために、Org-modeのサポートについて説明します。

MobileOrgの中でタグやTODOの状態を変更するためには、あなたは、例え、ひとつひとつのファイルが、一部しか使っていないとしても、全ての重要なタグやTODOキーワードを網羅するようにorg-todo-keywordsorg-tags-alist変数のカスタマイズを設定しなければなりません。MobileOrgは、同様にインバッファの設定で状態やタグを提供しますが、これらの変数の中で設定されているものについてのみ、TODOの状態についての設定 (see ファイル毎のキーワード) や相互に排他的な タグ (see タグの設定) についての装備状況を理解してください。


Next: , Previous: MobileOrg, Up: MobileOrg

B.1 ディレクトリの設定

MobileOrgはサーバー上のディレクトリを通して、Emacsと相互に連携させる必要があります。もしも公開のサーバーを使用しているなら、そのサーバーにアップロードされるファイルを暗号化したいと考えるかもしれません。この機能はOrg-mode7.02の MobileOrg 1.5(iPhoneバージョン)で実現していますが、あなたのシステムに openssl をインストールしておく必要があるでしょう。暗号化するために、MobileOrgにパスワードを設定し、Emacs上では、org-mobile-use-encryption143変数を設定しておく必要があります。

無料のDropbox.comのアカウント144を使い、ディレクトリを作成するのが最も簡単な方法です。MobileOrgで最初にDropboxに接続したときにDropboxの中にMobileOrgのディレクトリが作成されます。そのディレクトリが作成されたあと、次のようにEmacsに書き込みます。

     (setq org-mobile-directory "~/Dropbox/MobileOrg")

Org-modeはそのディレクトリの中に、MobileOrg用のファイルを置いたり、そこからキャプチャされたノートを読み込んだりするコマンドを持っています。


Next: , Previous: ディレクトリの設定, Up: MobileOrg

B.2 ディレクトリへの出力

この操作では、org-mobile-filesの中にリストアップされている全てのファイルを、org-mobile-directoryで指定したディレクトリにコピーします。デフォルトではこのリストにはすべてのアジェンダファイル(org-agenda-filesに登録されている)を含んでいます。しかしながら、org-mobiles-filesをカスタマイズすることでファイルを追加できます。ファイル名は、org-directoryとの相対パスで登録されるので、すべてのファイルがこのディレクトリの中に入ることになります。プッシュする操作で、ユーザー145によって定義されたすべてのカスタマイズされたアジェンダビューを持ったagendas.orgという特別なOrg-modeファイルを作成します。最後に、Org-modeは全ての他のファイルへのリンクを含んだindex.orgというファイルを書き込みます。MobileOrgは、最初サーバーからこのファイルを読み込み、それから、そこに置かれているすべてのアジェンダファイルとOrg-modeファイルをダウンロードします。ダウンロードのスピードを上げるために、MobileOrgは、どのファイルのチェック記号146が変更されたかどうかを読み取るだけなのです。


Previous: ディレクトリへの出力, Up: MobileOrg

B.3 MobileOrgからpullする

MobileOrgがサーバーと同期する際に、Org-modeのファイルを閲覧するために呼び出すだけではありません。それによってサーバー上のmobileorg.orgというファイルに対して、フラグがつけられたり、変更されたりしたエントリーに対して、キャプチャされたエントリーやポインタを追加します。Org-modeでは、この情報をInBoxファイルに統合し、フラッグがつけられたエントリーにポインタを使って操作するというpullの操作機能をもっています。どのように動作するのでしょうか。

  1. Org-modeは、mobileorg.org147の中で発見した全てのエントリーを移動し、org-mobile-inbox-for-pull変数によって、ポインタが付けられたファイルに追加します。記録されたエントリと編集されたイベントは、それぞれInBoxファイル中でトップレベルのエントリーとして位置づけられるでしょう。
  2. エントリーを移動したあと、Org-modeは、MobileOrgの中で作られた変更を実行することを試みます。いくつかの変更は直接、ユーザーの確認無しに適用されます。例では、タグ、TODOの状態、見出しそして本文に対するすべての変更がはっきりと適用されるというものです。将来の行動のために、フラグを付けられたエントリーは、:FLAGGED:というタグが付けられるでしょう。そのため、再び簡単に見つけることができるでしょう。あるエントリを探したり、変更を適用するさいに問題があれば、ポインタのついたエントリーはinboxに残され、エラーメッセージの印がつけられるでしょう。あなたはあとでこれらの案件を手動で解決する必要があります。
  3. Org-modeでは、その際にフラグがつけられたすべてのエントリーとともに、アジェンダビューを作成できます。そしてユーザーはそれらの項目をやり終えたり、必要な行動を実行するでしょう。MobileOrgのエントリーにフラグが付けられている間に、ノートが保存されていたら、そのノートは、カーソルがアジェンダの行の上に置かれた時に、エコーエリア上に表示されるでしょう。
    ?
    そういう特別なアジェンダの中で、?が入力されたときには、別のウインドウでフラグの付けられたノートの全てが表示され、キルリング上に内容がコピーされます。そして、? z C-y C-c C-cを使用することで、フラグのつけられたノートを、そのエントリーの通常のノートとして保存することができます。?を2度続けて入力すると、(プロパティの中に保存されていた)記録されているフラグの付いたノートと一緒に、:FLAGGED:というタグを削除するよう指示したことになります。この方法で、あなたはこのフラグの付けられたエントリーを意図したプロセスで完了させるという指示をすることになります。

もしも、すべてのフラグのついたエントリーを直接処理することができないならば、あなたはC-c a ?を入力して、アジェンダビュー148にいつでも戻ることができます。


Next: , Previous: MobileOrg, Up: Top

Appendix C 歴史と謝辞

Org-modeは2003年に誕生しました.Emacs Outlineモードのユーザーインターフェイスに対するフラストレーションから自由になるためでした.私(Carsten Dominik)は,自分のノートとプロジェクトを整理しようと試みていて,Emacs使うことが自然なやり方に思えました.ところが,アウトラインツリーの一部を隠したり表示したりするだけでも,2〜3個のキーを組み合わせたコマンドを,7種類も覚えなければならず,これは全く受け入れがたいことでした(訳注:org-modeでは<TAB>だけでよい).また,アウトラインでノートを取るとき,私は絶えずツリーの構造を変更して,自分の考えや計画に合わせて整理しておきたかったのです.Visibility cyclingstructure editingは,当初outline-magic.elパッケージに実装されていましたが,すぐにより一般的なorg.elに移しました.プロジェクトを計画するための心地良い環境になったので,次の段階はTODOリスト,基本的なタイムスタンプそしてテーブル機能を追加することでした.これらの機能は,org-modeが今日も追求している2つの主要なゴールを明らかにしました.すなわち,現代的で,アウトラインベースの,革新的かつ直感的な編集機能を持ったプレーンテキストモードになること.そして,ノートファイルに,プロジェクトプランイングの機能を直接組み込むことです.

Org-modeをリリースして以来,私やemacs-orgmode@gnu.orgに送られてくる,文字通りに何千ものeメールは,バグレポート,フィードバック,新しいアイディア,そして時にはパッチやアドオンを絶えず提供してくれます.org-modeを改良するために手助けしてくれるすべての人に感謝します.org-modeの様々な側面で,改善に多大な影響を与えた方々のリストをここに記したいと思います.このリストは完全ではないと思うので,もし書き忘れてしまった方がいればお詫びすると共に,連絡をください.

リストを記す前に,何名かについてアルファベット順で特別に紹介します.

Bastien Guerry
Bastienは,LaTeXエクスポートとプレーンなリストを構文解析する機能を含む,org-modeの数多くの拡張機能を実装しました(その多くが,現在はorg-modeの中心に組み込まれています).彼が副管理者としての役割を果たしていた開発初期の尽力は,org-modeプロジェクトの成功の中心となりました.また彼はWorg(訳注:org-modeのコミュニティサイト.http://orgmode.org/worg/)を考案し,org-modeのウェブにおける存在の認知を手助けし,orgmode.orgのホスティングコストのスポンサーになりました.
Eric Schulte and Dan Davison
EricとDanは,共同でorg-babelシステムに構築しました.これによりorg-modeを,コードの評価,文芸的プログラミングそして再現可能な研究に対応する,他言語環境へと変えました.
John Wiegley
Johnは,数々の素晴らしいアイディアとパッチを直接的にorg-modeに提供してくれました.具体的には,ファイル添付システム(org-attach.el),AppleMailとの一体化(org-mac-message.el),TODOリストの階層的な依存関係,習慣のトラッキング(org-habits.el)そして,暗号化(org-crypt.el)です.そして実は,org-modeのキャプチャシステムは,彼の素晴らしいremember.elを拡張したものです.
Sebastian Rose
Sebastianが居なければ,org-modeのHTML/XHTMLエクスポートは,無知なアマチュアによる痛ましい機能になっていたでしょう.彼はorg-modeの該当部分をより高いレベルに押し上げました.また,org-info.jsの作者でもあります.このJavaScriptは,org-modeから生成されたウェブページをinfoのように表示したり,単一キーによるナビゲーションでツリーを折り畳むインターフェイスを提供します.

さて!いよいよ貢献してくれた方々のリストに移ります.繰り返しますが,忘れているところがあれば教えてください.


Next: , Previous: 歴史と謝辞, Up: Top

Concept index


Next: , Previous: メインインデックス, Up: Top

Key index


Next: , Previous: キーワードインデックス, Up: Top

Command and function index


Previous: コマンドと関数インデックス, Up: Top

Variable index

これは変数とフェイスの完全なインデックスではありません.このマニュアルで言及したものだけを列挙しています.さらに詳しいリストは,M-x org-customize <RET>で表示されるカスタムブラウザで確認できます.表示されるツリーをクリックしてください.


脚注

[1] もしグローバルにフォントロックを使わない場合は,(add-hook 'org-mode-hook 'turn-on-font-lock)を使って,Org-modeのバッファのフォントロックを有効化してください.

[2] メーリングリストの管理者の仕事量を最小化するために,ぜひメーリングリストの購読を検討してください.

[3] 見出しの中で、C-aC-eおよびC-kの特別な作用を設定するために、org-special-ctrl-a/eorg-special-ctrl-k、およびorg-ctrl-k-protect-subtreeの変数を参照してください。

[4] しかしながら、org-cycle-emulate-tabオプションを参照してください。

[5] org-cycle-global-at-bobオプション参照。

[6] 間接的なバッファとは、(see the Emacs manual for more information about indirect buffers) は全てのバッファを含んでいるが、カレントのツリーに制限されるだろう。間接的なバッファを編集することは、オリジナルのバッファに変更を加えることでもある。だがそのバッファの中での表示に影響を与えることはできない。

[7] もしも行を途中で分割したくないときは、org-M-RET-may-split-line変数をカスタマイズしてください。

[8] 検索に一致したときに、どの範囲の内容を表示するかを詳細にコントロールするために、org-show-hierarchy-aboveorg-show-following-headingorg-show-siblings、そしてorg-show-entry-below変数を参照のこと

[9] これはorg-remove-highlights-with-changeオプションに依存する。

[10] このコマンドは、XEmacsでは動作しません。というのは、XEmacsでは、テキスト属性の部分ではなく、アウトラインを選択して表示するために使用するものだからです。

[11]*’を箇条書きの太い中黒として使用するときは、それらの行はインデントが設定されている必要があります。そうでなければ、それらの行は見出しのトップ階層と見なされてしまいます。また、わかりやすいアウトラインビューを得るために、先頭の星印を隠しているときは、プレーンなリストアイテムの場合は、本当の見出しと区別が付かなくなります。簡単に言えば、‘*’をサポートしているもののプレーンなリストアイテムのためには使用しない方が良いかもしれません。

[12] org-plain-list-ordered-item-terminatorの設定によって、それらのリストをはずすことが可能です。

[13]a.’、‘A.’、あるいは‘a)’といった形式も可能です。通常のテキストの混乱を最小限にするために、1つの文字のみに限定されています。この制限を超えると、数字に替えてbulletが自動的に使用されます。

[14] そのアイテムの中にチェックボックスがある場合は、そのクッキーは、チェックボックスの前に置かれなければなりません。もしも活性化されたアルファベットのついたリストがあるならば、[@b]といったカウンターを使用することもできます。

[15] これらどちらも無効にするためには、org-list-ending-methodを設定します。

[16] org-empty-line-terminates-plain-listsを参照してください。

[17] Org-modeではEmacs用のみの埋め込みの設定を変更できます。XEmacs用としては、Kyle E. Jonesのfilladapt.elを使用しなければなりません。この設定を起動するためには、.emacs:に(require 'filladapt)を記述しておく必要があります。

[18] もしもアイテムを分割したくないならば、org-M-RET-may-split-line変数をカスタマイズしてください。

[19] もっと多くの情報が必要ならば、org-list-automatic-rulesの中のbulletを参照してください。

[20] #+DRAWERS: HIDDEN PROPERTIES STATEというような行を使ってファイル毎に引き出しを定義することができます。

[21] 対応するインバッファの設定は、#+STARTUP: fninlineまたは #+STARTUP: nofninlineとなります。

[22] 対応するインバッファのオプションはfnadjustnofnadjustになります。

[23] この機能は,XEmacsでは動作しません

[24] Emacsの表示上は中央揃えにはできませんが,HTMLへエクスポートするときに中央揃えになります.

[25] org-modeはユーザーが指定する‘B4’のような参照を理解しますが,編集を目的とした数式を提供するときはこのシンタックスは使われません.変数org-table-use-standard-referencesを使うことで,この動作を変更できます.

[26] 後方互換のために,‘$LR5’や‘$LR12’のような特別な名前も利用できます.これらは,テーブル最終行にある5番目と12番目のフィールドを正しく参照します.しかしながら,このシンタックスは廃止予定であり,新たな文書で使うべきではありません

[27] テーブルの各行を分離している水平ラインだけがカウントされることに注意してください.ヘッダーの上に水平ラインがあるテーブルでは,その水平ラインをカウントしません.

[28] この計算の規模は,O(N^2)のオーダーです.各フィールドをコピーするために,テーブルFOOがパースされるのが原因です.

[29] constants.elは,SIcgsの二つの異なる単位系で定数の値を提供します.どちらが利用されるかは,変数constants-unit-systemの値に依存します.カレントバッファで値を設定するために,#+STARTUPでオプションconstSIconstcgsを指定します.

[30] printfによる再フォーマットは,精度の影響を受けます.integerdoubleに変換された値が渡されるためです.integerは,符号付き32ビット整数値に丸め込まれます.doubleは,全体が64ビット精度に制限され,近似的に16ビットの10進数の有意桁数があります.

[31] 最初の見出しより前の文はエクスポートされないことに注意してください。このためそのようなターゲットの最初のものは、最初の見出しより後にある必要があります。

[32] 見出しへのリンクを挿入するときは、バッファ内補完をすることができます。*印の後にいくつか文字を入力し、M-<TAB>を実行してください。現在のバッファ内にあるすべての見出しが補完候補として表示されます。

[33] リンクを挿入するのに、このコマンドを使わなければならないわけではないことに注意してください。Org-modeでのリンクはプレーンテキストですので、リンクはタイプしたりペーストしたりして直接バッファへ入力することができます。このコマンドを使うことによって、リンクは自動的に二重括弧に入れられ、オプションとして項目名を入力するかどうかをたずねられます。

[34] 一時保管されたリンクを挿入した後は、そのリンクは一時保管リストから削除されます。後で使用するためにリンクを保存したままにしておきたい場合は、C-c C-lの前に3回C-uをタイプするか、org-keep-stored-link-after-insertionオプションを設定してください。

[35] これはorg-PREFIX-complete-linkという特別な関数を呼び出すことによって行います。

[36] org-display-internal-link-with-indirect-buffer変数を参照してください。

[37] 対応する#+STARTUPinlineimagesinlineimagesと共に。

[38] 下方互換性のために、行番号はシングルコロンの後に置くこともできます。

[39] もちろん、長いTODOリストだけを含む個別の文書を作成することもできますが、そうする必要はないということです。

[40] この変数の変更は、Org-modeをバッファ内で再起動した場合のみ有効になります。

[41] タイムラインやアジェンダのバッファでは、「t」コマンドも同じ仕様です。

[42] 変数org-fast-tag-selection-include-todoも見てください、この変数は、タグを使って状態の変更を可能にします(see タグの設定)、この二つを混ぜて使いたいならですが。この場合、それぞれのキーワードセットに単一なキーを準備する必要があります。

[43] Org-modeがこれらの行を読み込むのは、ファイルを開いてOrg-modeが実行された場合だけです。‘#+’で始まる行にカーソルを置いてC-c C-cをすると、単に現在のバッファでOrg-modeを再起動したことになります。

[44] これに対応するイン-バッファ定義は:#+STARTUP: logdone

[45] これに対応するイン-バッファ定義は:#+STARTUP: lognotedone

[46] 変数org-log-states-order-reversedを確認してください

[47] Org-modeは、org-log-doneと状態変化の際の記録機能を使えば、二つのタイムスタンプを記録することも可能です。それでも、二つのメモをするように聞かれることはできません。もし実際に、両方の機能を設定した場合、状態変化の際の記録機能の方が優先されて、‘Closing Note’は、使われません。

[48] 次のオプションも参照してください。org-priority-start-cycle-with-default.

[49] サブタスクをグローバルTODOリストに含めないようにするには、org-agenda-todo-list-sublevelsを参照してください。

[50] これは概要リスト以外という意味ですが、このリストもorg-list-automatic-rulesを修正することで可能です。

[51] もし直下だけでなくクッキーのしたにあるすべてのチェックボックスを網羅したい場合は、変数org-hierarchical-checkbox-statisticsを設定してください。

[52] これら全てのバッファ内の設定は,C-c C-cとタイプすることでその行の変更を有効にすることができる

[53] タグ以外の条件を加えて検索するとこの限りではない(これはもしその検索が,より複雑な属性を含む条件を伴わないときだけ正しい)(see プロパティの検索)

[54] キーが設定されていないタグにはは自動的にキーがアサインされます.

[55] COLUMNS定義は1行でなければならないことに注意して下さい。書式の制約のためここでラップされます。

[56] 寄付されたパッケージはEmacsの一部ではありませんがOrgのメインの配布物と共に配布されます(http://orgmode.orgを訪ずれて下さい)。

[57] この表記は標準的なISO8601の日付、時刻フォーマットをもとに考案されています。代替フォーマットの使用については、カスタムタイムフォーマットを参照してください。

[58] org-read-date-prefer-futureの変数を参照。この変数timeに該当する変数を変更することにより、現在時刻より前の時刻を明日にシフトすることも可能です。

[59] カレンダーの表示が不要の場合、変数org-popup-calendar-for-date-promptを変更して下さい。

[60] もしミニバッファの表示が目障りな場合は、org-read-date-display-liveで表示しないよう設定することができます。

[61] 項目がDONEとマークされた場合でも、指定日の項目に表示され続けます。この設定が好みでなければ、変数org-agenda-skip-scheduled-if-doneを指定して下さい

[62]SCHEDULED’あるいは‘DEADLINE’の付いた日付が見出しのすぐ下の行に挿入されます。見出しとこの行の間には文字を記入してはいけません。

[63] 対応する#+STARTUPキーワードlogredeadlinelognoteredeadline、およびnologredeadline

[64] 対応する#+STARTUPキーワードlogredeadlinelognoteredeadline、およびnologredeadline

[65] 実際には、変更される状態はREPEAT_TO_STATEプロパティ或いは変数org-todo-repeat-to-stateによって決められます。これらが指定されていない場合は、デフォルトとしてTODO状態に戻ります。

[66] この部分の動作は、オプションorg-log-repeat、あるいは#+STARTUPオプションのlogrepeatlognoterepeatnologrepeatにより変更することができます。lognoterepeatを指定した場合には、メモを入力するように促されます。

[67] Emacsの外でタスクに取りかかっていたという想定で時計を再開する場合は、(setq org-clock-persist t)を使用して下さい。

[68] 「その場で」工数の見積もりを追加するには、その機能を持つ関数を変数org-clock-in-prepare-hookにフックして下さい

[69] プロパティLAST_REPEATにより記録

[70] 変数org-clock-modeline-totalについても参照

[71] これに対応するバッファ内の設定は#+STARTUP: lognoteclock-outです。

[72] 言語に関する項目は、変数org-clock-clocktable-language-setupにより設定することができます。

[73] 全てのパラメーターは単一行で指定する必要があるので注意して下さい。この例ではマニュアルの文字幅の制約のために改行が入っています。

[74] Mac OS Xのコンピュータでは、Emacsの休止時間だけでなくユーザーが実際に休止した時間を計測します。X11では、Org-modeのgitディストリビューションから入手できるユーティリティプログラムx11idle.cをインストールすることにより、同様に全体の休止時間を計測することができます。その他のシステムでは、休止時間はEmacsが休止していた時間のみを表します。

[75] 使用されるプロパティは、変数org-effort-propertyで変更することができます

[76] 単準なリストを階層的に足し合わせる際には落とし穴があります(see アジェンダのカラム表示)。

[77] 自分のキーを選択して下さい。C-c cはただの提案です。

[78] もしこれらの文字通りの並びが必要な場合は、%をバックスラッシュでエスケープすること

[79] もしあなたが自分のリンクタイプを定義しているならば(see ハイパーリンクのタイプの追加)、org-store-link-propsに保存されているいずれのプロパティもキャプチャテンプレート中に同じ方法でアクセス可能です。

[80] これはユーザーではなく常に他人になる。org-from-is-user-regexpを参照すること。

[81] もしエントリーやOrgファイルを他のディレクトリに移動した場合、org-attach-directoryが絶対パスを含むように設定する必要があります。

[82] #+STARTUPキーワード、logfilelognoterefile、そしてnologrefileに対応している。

[83] 後方互換性のために、もしこれらの行がファイル中にいくつか存在する場合、それ以下のテキストのアーカイブ場所をそれぞれ指定します。最初の行はその定義以前のすべてのテキストに適応されます。しかし、この方法は文書のアウトライン構造と互換性が無く、全く推奨されません。複数のアーカイブ場所をバッファ内で設定する正しい方法は、プロパティを使う方法です。

[84] もしもその変数の値がリストではなく、単独のファイル名の場合には、その外部ファイルの中に記載されているアジェンダファイルの名前となります。

[85] コマンド選択画面を使用しているときに、コマンドを選択する前に、<を押すと、編集中のファイルに対するコマンドが制限されて、次のコマンド選択画面でコマンドが入力されるまで、org-agenda-filesは無視されます。

[86] 逆の互換性として、1をカレントバッファを制限するために入力することもできます。

[87] 逆の互換性として、カレントリージョンまたはカレントサブツリーに限定するために0を入力することもできます。.

[88] 逆方向の互換性のために、普遍的な前置引数C-uをつけることでアジェンダ(予定表)より上に、TODOリストを書き出すことができます。この機能は軽視されており、専用のTODOリストやブロックアジェンダ(see ブロックアジェンダ).をその代わりに利用することが多いです。

[89] Note that the order of the arguments (month, day, year) depends on the setting of calendar-date-style.

[90] See タグの検索.

[91] 逆に言うと、以下のような動作も生じます。もしも1つのファイルの中に、いくつかののそういう行が存在するならば、それよりも下の行にあるテキストに、そのカテゴリーをそれぞれ指定することになります。最初のカテゴリーは、その最初のCATEGORYの行はよりも前にあるどのテキストにも適用されます。しかしながら、stronglyという手法を使うことは、文書のアウトライン構造と非互換であることを、強く非難することになります。複数のカテゴリーをバッファの中で設定する正しい方法は属性を使用することです。.

[92] ここではタグフィルターだけが有効です。工数のフィルターは無視されます。

[93] カスタムコマンドによって、オプションとしてorg-agenda-filter-preset変数と結びつけることで、フィルターを事前にセットすることができます。このフィルターは、ビューに適用されます。そして、リフレッシュや2番目のフィルターを通して、基本的なフィルターとして存続します。このフィルターは、アジェンダのブロックの中で、アジェンダビュー全体のグローバルなプロパティです。この設定を行うためには、個別のブロックのセクションではなく、グローバルオプションのセクションで行います。

[94] org-agenda-include-diaryが設定されているときは、このファイルはアジェンダ用に解析されます。

[95] あなたは前置引数と説明をつけて、コンソールのセルを挿入することで、前置引数のキーのための説明を表示することができます。

[96] あなたはHrvoje Niksic氏のhtmlize.elをインストールする必要があります。

[97] PDFの出力を作成するためには、Ghostscriptのps2pdfユーティリティがシステムにインストールされている必要があります。pdfファイルを選択するとポストスクリプトファイルも作成されます。

[98] もしもあなたが週間アジェンダやグローバルなTODOリストなどのような標準的なビューを保存したいならば、ファイル名を指定することができるようにするために、それらのビューのためにカスタムなコマンドを定義する必要があります。

[99] 引用の方法はあなたの使用しているシステムに依存します。事例用のFAQを確認してください。

[100] HTMLバックエンドに対しては,この作業は自動的に行われます(Org-modeと一緒に配布されているhtmlize.elのバージョン1.34が必要です).LaTeXの要塞化されたコードの塊はリスティングか,mintedパッケージによってアーカイブされます.リスティングを使うには,org-export-latex-listings変数をオンにし,LaTeXのヘッダにリスティングパッケージが含まれているようにします(例: org-export-latex-packages-alistの設定とを使います).色付きの出力を含む設定のオプションについて,リスティングのドキュメントを見てください.mintedを使うには,pygemntsプログタムをインストールする必要があり,org-export-latex-mintedを追加で設定し,LaTeXのヘッダーにmitedパッケージが含まれていることと-shell-escapeオプションがpdflatexに引き継がれている(org-latex-to-pdf-processを見てください)ことを確認します.

[101] Org-modeの例で説明するのに便利なリンクに行番号を使う間,-k-n -rに追加することでソースコードのラベルを維持します.

[102] 終了時,Org-modeによってアウトラインの見出しや特別なコメントと間違えられないようにするために,‘*’か‘#’から始まる行はカンマが銭湯に追加されます.

[103] org-edit-fixed-width-region-mode変数により,異なるモードを選択することもできます.

[104] LaTeXはドナルド・クヌースのTeXシステムを基としたマクロシステムです.“LaTeX”で説明される多くの機能はTeXからのものですが,違いはそれほどありません

[105] あなたは org-pretty-entities変数または#+STARTUPオプションentitiesprettyにデフォルトを設定することができます

[106]

[107] これを行うには,あなたのシステムにLaTeXをインストールする必要があります.そしてまた,http://sourceforge.net/projects/dvipng/で入手できるdvipngプログラムも必要です.

[108] MathJaxが使われている時,MathJaxによって認識されている環境が処理されます.dvipngを画像の生成に用いる時,LaTeX環境が扱われます.

[109] カーソルがコード片の中にあるときにOrg-modeはテストを行うためのメソッドを持ちます.詳細はorg-inside-LaTeX-fragment-p関数のドキュメントを参照してください.

[110] もし、このように多くのオプションを設定したい時は, それぞれオプション行を作りことができます。

[111] このような挙動をデフォルトにするには、 org-export-run-in-background変数を設定してください.

[112] transient-mark-mode が有効である必要があります。

[113] 現在のサブツリーを選択するには、 C-c @ と入力してください。

[114] transient-mark-mode が有効である必要があります。

[115] 現在のサブツリーを選択するには、 C-c @ と入力してください。

[116] ただし、org-export-html-inline-imagesを確認してください。

[117] インストール方法については、MathJaxのウェブサイトにあります。http://www.mathjax.org/resources/docs/?installation.htmlを参照してください。

[118] TODOキーワードやタグにCSSが適用されるとコンフリクトを起こします。org-export-html-todo-kwd-class-prefixorg-export-html-tag-class-prefixを使って、それらをユニークにしてください。

[119] このスタイルはorg-export-html-style-defaultで定義されており、変更できません。 この初期設定を無効にするにはorg-export-html-style-include-defaultを修正してください。

[120] デフォルトのLaTeX出力は、pdftexまたはlatexにより出力されるよう設計されています。それには、xetexや恐らくluatexと互換性のないパッケージが含まれています。org-export-latex-default-packages-alistorg-export-latex-packages-alistを参照してください。

[121] transient-mark-modeが有効である必要があります。

[122] 現在のサブツリーを選択するには、C-c @を入力してください。

[123] org-export-latex-default-packages-alistorg-export-latex-packages-alistが接合されたものです。

[124] transient-mark-mode を有効にしている必要があります。

[125] 現在のツリーを選択するには C-c @ を使ってください。

[126] 詳しくは変数org-icalendar-use-deadlineorg-icalendar-use-scheduledを見てください。

[127] 継承したタグやTODOの状態を追加するには変数org-icalendar-categoriesをカスタマイズしてください。

[128] org-use-property-inheritanceを設定した場合、それに応じてLOCATION属性は高い階層からその値が継承されます。

[129] もしソースと公開ディレクトリが同じであれば,file-source.orgfile-source.org.htmlです.このようなセットアップでは,プロジェクトが公開される次回,新しいOrg-modeファイルとみなされるソースファイルが公開されるのを防ぐためにあなたは:exclude \"-source\\\\.org\"org-publish-alist中のプロジェクトの定義に追加する必要があることに注意しください.

[130] コードを評価するときはいつでも、そのコードが害をなす可能性があります。Org-modeは、ユーザーから明示的な確認をできたときのみにコードを評価する安全装置をいくつも用意しています。これらの安全装置については(加えて、それらを無効化する方法についても)、コード評価の安全性を参照してください。

[131] 変数org-babel-no-eval-on-ctrl-c-ctrl-cを設定することで、キーバインドC-c C-cからコードの評価を除去できます。

[132] Emacs22とOrg-mode6.29が必要です

[133] Emacs23.1はorg-indent-modeがクラッシュします

[134] org-indent-modevisual-line-mode(または純粋にword-wrapをセットします)が(見出しを含めた)長い行を正しいインデントでラップするようにwrap-prefixプロパティをセットします

[135] org-indent-indentation-per-level変数を参照してください

[136] org-indent-modeを有効にすると,org-hide-leading-starstが,org-adapt-indentation-higenilがセットされます

[137] あなたがプロパティの検索やリファイルの対象のためにレベルを指定する必要がある時,‘LEVEL=2’は3つの「*」などにも対応します

[138] org-R.elソースコードとの連携で説明されたOrg-modeの機能によって置き換えられ、現在使われておりません。

[139] デフォルトでは、LaTeX, HTMLと Texinfoの場合だけ動作します。他のモードのテンプレートをインストールするには、変数orgtbl-radio-tablesを編集して下さい。

[140]#+TBLFM’行に奇数個のドル記号(dollar character, $)が在る場合、LaTeXモードの色分けで問題が生じるかも知れません。この問題を解決するには、例で示すようにcomment環境内に行を追加してドル記号の表現を調整してください。AUCTeXをfont-latexライブラリと使っている場合のはるかに優れた解決法は、変数LaTeX-verbatim-environmentscomment環境追加することです。

[141] HTMLの変換関数は、HTMLをエクスポートする時にテーブルを作るコードと全く同じものを使っています。

[142] org-odd-levels-onlyを使用している場合、level numberは階層構造のレベルと対応していて、スター「*」の数ではないことに注意して下さい。

[143] もしもあなたのEmacsの設定ファイルの中にパスワードを安全に保存したいならば、org-mobile-encryption-password変数を設定すると良いでしょう。その変数の説明文を読んでください。暗号化は、.org ファイルの内容のみに適用されることに注意してください。ファイルの名称そのものは、そのまま表示されます。

[144] もしもDropboxを利用できない場合、またはMobileOrgのバージョンがそれをサポートしていない場合には、webdavサーバが利用できます。詳しい情報を得るには、MobileOrgの説明部とFAQ entryをチェックしてください。

[145] アジェンダを作成する際に、Org-modeではすべての参照されるエントリーにID属性を強制的に付加します。そのため、これらのエントリーは、将来の行動のために、それらのエントリーにMobileOrgによってフラグを付けたとしても、ユニークなものとして識別されます。もしも、こんなにも沢山のエントリーにそういう属性値をつけたくない場合は、org-mobile-force-id-on-agenda-items変数をnilと設定してください。Org-modeは、各エントリーが十分ユニークであることを期待したうえで、アウトラインの階層構造に依存することになるでしょう。

[146] checksums.datというファイルの中に自動的に保存されます。

[147] mobileorg.orgはこの操作のあとで空になります。

[148] しかしながら、微妙な差があることに注意してください。M-x org-mobile-pull <RET>によって、自動的に作成されたビューは、最後にpullされて配置されたすべてのファイルを検索することを保証されています。これは、あなたのアジェンダファイルのリストに、現在含まれていないファイルも含みます。もしもあなたが、ビューを再作成するために、C-c a ?を最後に使用したならば、カレントのアジェンダファイルのみが検索されます。