:var
:results
:file
:dir
とリモートでの実行
:exports
:tangle
:mkdirp
:comments
:no-expand
:session
:noweb
:cache
:sep
:hlines
:colnames
:rownames
:shebang
:eval
このマニュアルは,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
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.で手に入ります.
重要: もしあなたが,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のアクティベーションを忘れずに実行してください.
拡張子が.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>を二回押します.
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を使っていてエラーが発生したら,バックトレースがとても役立ちます(作り方は次節を参照してください).しばしば例となる小さなファイルが問題解決の手助けになります.それらには次のような明瞭な情報を含んでいます.
Org-modeを利用していて理解できないメッセージのエラーが発生したら,バグを発見した可能性があります.エラーを報告する最良の方法は,すでに説明したバグレポートの書式に加えて,backtraceを提供することです.バックトレースは,ビルトインされたデバッガによるエラーの発生箇所とどのように発生したかについての情報を含みます.以下に,有用なバックトレースを生成する手順を示します.
C-u M-x org-reload RET
もしくは,Org -> Refresh/Reload -> Reload Org uncompiled
をメニューから選択します.
Options
から,Enter Debugger on
Error
を選択します(XEmacsでは,このオプションはTroubleshooting
サブメニューにあります).
Org-modeは,3種類のキーワードを使います.TODOキーワード,タグ,プロパティです.このマニュアルでは次のように植字を使い分けます.
TODO
WAITING
boss
ARCHIVE
Release
PRIORITY
このマニュアルでは,Org-modeの機能を利用するためのキーバインドと,対応するコマンドの両方を表記します.Org-modeは,しばしば異なる関数に対して同じキーバインドを使います(これはコマンドを利用する状況に依存しています).そのようなキーバインドが割り振られたコマンドには,org-metaright
のような一般的な名称があります.このマニュアルでは,可能な限り一般的なコマンドを用いて内部的に呼び出される関数の名称を提示します.例えば,ドキュメントの構造についての章では,M-<right>はorg-do-demote
を呼び出すように表記します.一方で,テーブルについての章では,org-table-move-column-right
を呼び出すように表記します.
もし望むならば,org.texiにあるcmdnames
フラグの設定を外すことで,コマンドの名称を表示しないようにマニュアルをコンパイルできます.
Org-modeは、Outline modeをベースとしており、ドキュメントの構造を編集するためにフレキシブルなコマンドを用意しています。
Org-modeはoutline modeの上で実行されます。アウトラインによって階層構造で体系化されたドキュメントが作られ、(少なくとも私にとっては)それによって、ノートや思考の最高の表現方法となります。ドキュメントの大きな部分を折りたたむ(隠す)ことによって、ドキュメントの骨格のみを表示したり、現在、作業している部分を表示したりして、ドキュメントの構造の全体を見渡すことができるのです。Org-modeは、全体を表示したり/隠したりする機能を、たったひとつのコマンド、org-cycle、それは<TAB>キーと結びついていますが、に圧縮することにより、アウトラインの使用を大変単純なものにしています。
見出しは、アウトラインのツリーの構造を定義します。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
を参照してください。
アウトラインによって、バッファの中で、テキストの一部を隠すことが可能となります。Org-modeはバッファ内での表示の状況を変更するために、<TAB>とS-<TAB>とに結びついた2つのコマンドを使用します。
org-cycle
),-> FOLDED -> CHILDREN -> SUBTREE --. '-----------------------------------'
これを動作4 させるためにはカーソルが見出しの上に置かれている必要があります。カーソルがバッファの一番上の行にあり、そして最初の行が見出しでない場合は、<TAB>が実際にグローバルな切り替えが実行されます。(下記を参照)5 前置引数(C-u <TAB>)をつけて呼び出したときは、グローバルな切替が実行されます。
org-global-cycle
)
,-> OVERVIEW -> CONTENTS -> SHOW ALL --. '--------------------------------------'
S-<TAB>がNという数字のついた前置引数と一緒に呼び出されたときは、レベルN以上の見出しがCONTENTSビューに表示されます。テーブルの中では、S-<TAB>は前のフィールドにジャンプするということに注意してください。
show-all
)org-reveal
)
カレントエントリーや、下の見出しや上の階層を表示して、その場所でのコンテクストを表示する。ツリーの抽出コマンド(see ツリーの抽出)やアジェンダのコマンド(see アジェンダのコマンド)によって表示された場所の周辺で作業をするのに役立ちます。前置引数をつけることで、各階層での同一レベルの見出しを表示する。前置引数を2重に使った場合は、親のサブツリー全体を表示する。
show-branches
)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 プロパティとカラム)を持っており、それを受けて適用された表示性をしめすでしょう。この属性のために許されている値は、folded
、children
、content
およびall
です。
org-set-startup-visibility
)
そのバッファにおける起動時の表示条件に戻ります。すなわち、起動時のオプションで要求されている内容、そして個々のエントリーの中で設定されている‘VISIBILITY’の属性に。
以下のコマンドはバッファの中で他の見出しにジャンプするものです。
outline-next-visible-heading
)outline-previous-visible-heading
)
前の見出しへ。C-f
org-forward-same-level
)
次の同一階層の見出しへ。C-b
org-backward-same-level
)
前の同一階層の見出しへ。C-u
outline-up-heading
)
一つ上の階層の見出しに戻る。C-j
org-goto
)
現在のアウトラインの表示状態を変更することなく、別の場所にジャンプする。現在のバッファの中で文書の構造を表示し、そこではあなたの目的の場所を見つけるために以下のようなキーを使用することができます。
<TAB> 表示を切り替える。
<down> / <up> 次の/前の表示されている見出しへ。
<RET> この場所を選択する。
/ ツリーの抽出による検索を実行する
もしもorg-goto-auto-isearch
を停止したときには以下のキーが動作する
n / p 次の/前の表示されている見出しへ。
f / b 次の/前の同じ階層の見出しへ。
u ひとつ上の階層へ。
0-9 数値の変数。
q 停止
org-insert-heading
)org-insert-heading-respect-content
)org-insert-todo-heading
)org-treat-insert-todo-heading-as-state-change
変数も同じように参照してください。org-insert-todo-heading-respect-content
)org-cycle
)org-do-promote
)org-do-demote
)org-promote-subtree
)org-demote-subtree
)org-move-subtree-up
)org-move-subtree-down
)org-cut-subtree
)org-copy-subtree
)
org-paste-subtree
)
キルリングからサブツリーを貼り付ける。これによると、貼り付けるポジションにうまく合わせて、ツリーに適合するようにサブツリーの階層を調整する。数字付きの前置引数をつけるか、‘****’のような星印のついた見出しの後に貼り付けることによって、貼り付ける階層を指定することができる。
org-yank
)org-yank-adjusted-subtrees
とorg-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
org-clone-subtree-with-time-shift
)
たくさんのそれと同じ兄弟のコピーを作成することで、サブツリーの複製を作ります。たくさんのコピーの作成を実行したいならば、そのエントリーに含まれているタイムスタンプも調整されるように指定することもできます。この機能は便利です。例えば、準備している一連の講義に関連した沢山のタスクを作成するという場合のように。もっと詳細な情報が必要ならば、org-clone-subtree-with-time-shift
コマンドの解説を参照してください。C-w
org-refile
)
エントリーやリージョンを別の場所に保管します。See ノートの再配置.^
org-sort-entries-or-items
)
同じ階層のエントリーを並び替えられます。アクティブなリージョンがあるときに、そのリージョンにあるすべてのエントリーは順番に並びます。もう一方で、カレントの見出しの子供の階層も並び替えられます。並び替えの形式をコマンドで入力します。すなわちアルファベット順、数字順、時間順(実行するために参照される作成日、予定日、期限などの最初のタイムスタンプ)、優先順位順、TODOキーワード順(設定の中で定義された一連のキーワードの中で)あるいは属性の価値の順に並べ替えるために。並び順を反転することも同様に可能です。並び替えのキーを拡張するために自分自身の関数を用意することもできます。C-u
C-uという二重の前置引数を使用すると、複製されたエントリーは削除されます。s
org-narrow-to-subtree
)
カレントのサブツリーのためにバッファをナローイングします。b
org-narrow-to-block
)
カレントのブロックのためにバッファをナローイングします。widen
)org-toggle-heading
)アクティブなリージョンがあるときには(Transient Mark mode)、そのリージョンのすべての見出しの階層を上げたり、下げたり作用することができる。あるリージョンの見出しを選択するためには、行の先頭にポイントを置いてマークし、最初の見出しの先頭でマークし、変更する最後の見出しの次の行にポイントを置くのが良い方法である。カーソルがテーブル (see テーブル)の中にあるときに、Meta-Cursorキーは異なる機能性を持つことに注意してください。
Org-modeの重要な特徴の一つに、あるアウトラインのツリーに含まれている選択された情報のためにsparse trees(ツリーの抽出)を作ることができるということがあります。そのため文書全体が最大限畳まれていても、その8 上に見出し構造に沿って表示することができるのです。試してみて、それがどんなに素早く動作するかを見てください。
Org-modeにはそういうツリーを作成するためのいくつものコマンドがあります。これらのコマンドの全てはディスパッチャーを通してアクセスすることができます。
org-sparse-tree
)org-occur
)next-error
)
そのバッファの中の次のツリーの抽出部分にジャンプする。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コマンドを使用し、エクスポートしたファイルを印刷することができます。
アウトラインのエントリーの中に、手動でフォーマットしたリストによって、別の構造化された項目を追加することができます。そのリストを使って、チェックボックス(see チェックボックス)のリストを作成する方法が提供されています。Org-modeではそういうリストの編集をサポートしており、そしてすべてのエクスポート機能(see エクスポート)はそれらのリストの構文を解析しフォーマット化することができます。
Org-modeでは、数字付きのリスト、順序のないリスト、そして記述リストを解釈します。
org-alphabetical-lists
を設定することによって、‘1.’や‘1)’13のように。もしもあなたがリストをこれら以外の値(e.g.
20)で始めたいと思ったら、そのアイテムの最初の文字を[@20]
14
のような文字で始めます。
同じリストに属しているアイテムは、最初の行と同じインデントでなければならない。特に、もしも順番のついたリストが‘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
を設定してください。
org-cycle
)org-cycle-include-plain-lists
変数を参照してください。もしもこの変数がintegrate
に設定されているときは、プレーンなリストアイテムは下の階層の見出しと同様に取り扱われます。そのため筆のアイテムの階層はbulletまたは数字のインデントによって決定されます。アイテムは実際の見出しに常に従属しているのです。しかしながら、階層構造は完全に区別されたままになります。org-insert-heading
)org-cycle
)org-support-shift-select
がオフになっている時だけです。もしもそうなっていないなら、C-<up>
とC-<down>のようなパラグラフのジャンプコマンドと全く同様の効果が現れるように使用することができます。
特別な場合として、リストの本当に最初のアイテムの上で、このコマンドを使用することで全てのリストを動かすことができます。この動作はorg-list-automatic-rules
を設定することで無効にすることができます。あるリストのグローバルなインデントは、そのリストの後のテキストにはなんの影響も与えません。
org-plain-list-ordered-item-terminator
の設定により、異なる箇条書き/番号付きのbullet(‘-’,
‘+’, ‘*’, ‘1.’, ‘1)’)
、またはそれらのサブセットをもとにして全体のリストの階層、リストのタイプ、リストの位置19を切り替えます。Nという数字の付いた前置引数を使用すると、これらのリストの中のN番目のbulletが選択されます。もしも、このコマンドを呼び出したときにアクティブなリージョンがあるならば、選択された文章は普通のアイテムに変更されます。前置引数を使うと、すべての行がリストアイテムに変換されます。もしも最初の行がすでにリストアイテムだったならば、どのアイテムの符号もリストから削除されるでしょう。最後に、アクティブなリージョンでない場合でも、リストアイテムに変換されます。
org-support-shift-select
に依存します。
あるエントリーに関連する情報を保持していたいときがあるが、普段はその情報を見たくはないということがあります。こういうときのために、Org-modeは引き出しという機能を持っています。引き出しはorg-drawers
20変数で設定する必要があります。引き出しはこんな形をしています。
** これは見出しです ここはまだ引き出しの外側です :DRAWERNAME: これは引き出しの内側です。 :END: 引き出しの後です。
見出し上で表示の切り替え(see 表示、非表示の切り替え)を行うとエントリーを隠したり表示したりすることができますが、引き出しの部分は1行に畳まれたままの状態になります。引き出しの中身を見るためには、カーソルを引き出しの行に移動し、そこで<TAB>キーを押すことが必要です。Org-modeは属性(see プロパティとカラム)を保持するために、PROPERTIES
という引き出しを使用します。そしてノート(see 作業の状態変化の追跡)と時刻(see 作業に費やした時間の計測)の変化の状態を用意するためにLOGBOOK
という引き出しの中に保存をすることができます。もしも、状態の変化のためと似たような方法で素早くノートをLOGBOOKの引き出しに保存したいときには、このように使います。
Org-modeはソースコードの例(see リテラルの例)
から時刻のログ情報(see 作業に費やした時間の計測)を記録することまで、いろいろな目的のために、begin...endというブロックを使用します。このブロックでは、行の先頭でTABを押すことによって、折り畳んだり、折り畳みを解いたりすることができます。org-hide-block-startup
変数を設定するか、以下のようなファイル毎の設定をすることで、起動時に全てのブロックを折り畳んでおくこともできます。
#+STARTUP: hideblocks #+STARTUP: nohideblocks
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]
[fn:name]
name
がユニークな言葉によるラベルとなっており、さもなければ簡単に自動的に作成される、数字が用いられます。
[fn:: これは脚注のインラインの定義です]
[fn:name: a definition]
[fn:name]
を使用することができます。
脚注のラベルは自動的に作成することができます。そうしないならば、あなた自身で名前を作成することができます。これはorg-footnote-auto-label
変数で操作され、#+STARTUP
キーワードに対応します。詳細については変数の説明を参照してください。
カーソルが脚注参照上にあるときに、定義部分にジャンプします。カーソルが定義部分にあるときに、(最初の)参照されている部分にジャンプします。
そうでなければ、新しい脚注を作成します。org-footnote-define-inline
21によって、参照の一部として、または、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-adjust
22とnofnadjust
の変数に依存し、それぞれの挿入と削除のあとに、番号の振り直しと脚注の並び替えが自動的に行われます。
もしも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は、それらのモードの中に、インデントやオートフィルの設定を書き出すでしょう。そして、アイテムの最初の行の後にアイテムのコンテクストを見つけるでしょう。
Org-modeは,高速で直感的なテーブルエディタを備えています.Emacsのcalcパッケージを用いて,スプレッドシートのような計算機能に対応しています. (Emacs Calculatorの詳細は,同パッケージのマニュアルを参照してください.)
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-editor
とorg-table-auto-blank-field
を調節してください.
org-table-create-or-convert-from-region
)
アクティブリージョンをテーブルに変換します.全ての行が少なくとも一つのタブを含んでいるならば,この関数は処理対象をタブ区切りの表であると想定します.また,全ての行がコンマを含んでいるならば,コンマ区切り(いわゆるCSV)であると想定されます.それ以外の場合は空白文字で区切られていると想定します.プレフィックスを用いることで,区切り文字を強制的に指定できます.すなわち,C-uでCSV,C-u
C-uでTAB区切りを指定できます.また,プレフィックスの引き数として整数値Nを用いれば,少なくともN個の連続した空白を区切りとして指定できます.条件に合わなければ,TABが代わりの区切りとして使われるでしょう.
もしアクティブリージョンが存在しないならば,このコマンドは空のテーブルを生成します.しかし,|Name|Phone|Age <RET>
|- <TAB>とタイプしてテーブルを作り始める方が簡単です.
org-table-align
)org-table-next-field
)org-table-previous-field
)org-table-next-row
)org-table-beginning-of-field
)org-table-end-of-field
)org-table-move-column-left
)org-table-move-column-right
)org-table-delete-column
)org-table-insert-column
)org-table-move-row-up
)org-table-move-row-down
)org-table-kill-row
)org-table-insert-row
)org-table-insert-hline
)
カーソル位置の下に水平ラインを追加します.プレフィックスを使うと,カーソル位置の上に追加されます.<RET>
org-table-hline-and-move
)
カーソル位置の下に水平ラインを追加して,カーソルを追加された水平ラインの次の行に移動します.^
org-table-sort-lines
)
リージョンに含まれるテーブルの各行をソートします.ポイントのある列の情報がソートに利用されます.また,ソート対象となる範囲は,最も近い水平ラインの行まで,もしくは,テーブル全体が指定されます.カーソル位置がテーブルの第一列よりも前にあるときは,ソートに利用する列を指定するためにプロンプトが表示されます.すでにアクティブリージョンが存在する場合,マークは第一行とソートに利用する列を指定して,同時にポイントは,ソート対象に含まれる最終行に位置しなければなりません.このコマンドは,ソートの種類(アルファベット順,数値順,もしくは時間順)を指定するためにプロンプトを表示します.プレフィックスを利用すると,大文字と小文字が区別されます.
org-table-copy-region
)org-table-cut-region
)
テーブルの矩形領域を特別なクリップボードにコピーし,領域内の全てのフィールドを空にします.つまりこれは「カット」操作です.C-y
org-table-paste-rectangle
)
テーブルに矩形領域をペーストします.領域の左上がカーソル位置のフィールドに上書きされます.ペーストする領域に重なるすべてのフィールドは上書きされます.対象とするテーブルに矩形領域が合わないならば,必要に応じてテーブルは拡張されます.この処理は,テーブルの水平ラインを無視します.
org-table-wrap-region
)org-table-sum
)org-table-copy-down
)org-table-copy-increment
の値に依存して,フィールドが整数値のときは値を一つ増やしてからコピーされるでしょう.整数の値が大きすぎる場合は,値が増やされません.また,プレフィックスで0
を用いれば,一時的に値の増加を防げます.このキーバインドは,shift-selectionと,これに関連するモードでも使われています(see 衝突).
org-table-edit-field
)org-table-create-or-convert-from-region
)
org-modeのバッファにテーブル状のテキスト(訳注:文字列がタブで区切られているテキスト領域など)をペーストすることでもorg-modeのテーブルを作成できます.C-x
C-xでバッファにペーストされているテキストを選択して,C-c |でorg-modeのテーブルに変換します(前述のCreation
and conversionを参照してください).
org-table-export-default-format
で調節できます.また,ファイル名を指定するためにプロパティTABLE_EXPORT_FILE
を利用でき,サブツリーでのテーブルエクスポートのフォーマットを指定するためにプロパティTABLE_EXPORT_FORMAT
を指定できます.エクスポートされるテーブルについて,org-modeはかなり一般的なフォーマットをサポートします.エクスポートのフォーマットは,Orgtblのラジオテーブルで使われているものと同じです.より詳しい説明は変換関数を参照してください.
‘|’で始まる行を思い通りに編集するため,自動的なテーブルの編集が好みでない場合は,次のコマンドでこの機能を停止できます.
(setq org-enable-table-editor nil)
こうすると,テーブルのコマンドで利用できるのは,C-c C-cによる手動の再整列だけになります.
テーブルの各列の幅はテーブルエディタによって自動的に決定されます.また,列の配置も自動的に決定されます.具体的には,列の中で数値でないフィールド数に対する,数値(と解釈できる)フィールド数の割合に応じて決まります.
ただ一つ,または,いくつかのフィールドでより多くのテキストを扱おうとすると,困ったことに列幅が広がってしまいます.もしくは,フィールドの内容にかかわらず,固定幅の列でテーブルを作成したいと思うかもしれません.列の幅を指定するためには,列のどこに記述してもよいですが,一つのフィールドが文字列‘<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>’,‘c’24,もしくは‘<l>’を同じような形式で利用できます.‘<|10>’のようにすれば,列を揃える方法とフィールドの幅を同時に指定できます.
書式の設定情報のみを含む行は,ドキュメントをエクスポートするときに自動的に削除されます.
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) | |----+-----+-----+-----+---------+------------| | / | < | | | < | |
org-modeのテーブルエディタが提供する直感的な編集が好みなら,テキストモードやメールモードのような別のモードで利用したくなるかもしれません.これはマイナーモードのOrgtblモードが実現してくれます.M-x orgtbl-modeでトグルできます.標準でOrgtblモードを有効にするには,たとえばメッセージモードのときに,次の設定を使います.
(add-hook 'message-mode-hook 'turn-on-orgtbl)
さらに,いくつかの特別な手順を追加することで,orgtblモードの任意のシンタックスを使ってテーブルをメンテナンスできます.たとえば,orgtblモードの簡単さと機能を用いてLaTeXのテーブルを構築できます.これは表計算機能も含んでいます.さらなる詳細は,任意の構文によるテーブル.を参照してください.
org-modeのテーブルエディタは,表計算機能を実装するためにEmacsのcalcを利用します.異なるフィールドの値を使って様々なフィールドの値を算出するために,Emacs Lispの書式も評価できます.十分な表計算機能が備わっていますが,org-modeの実装が他の表計算ソフトと全く同等というわけではありません.たとえば,org-modeは列の数式の概念を理解しています.これは,関連する各フィールドに数式をコピーすることなく,ヘッダーを除いた列にある全てのフィールドに適用されます.数式のデバッガもあります.また,数式に含まれる参照に対応するフィールドを,テーブル内でハイライトする機能と,それらの参照に矢印キーで移動する機能を持つ数式エディタがあります.
テーブル内部のフィールドを他のフィールドの値を使って計算するに,数式は,他のフィールドか範囲を必ず参照していなければなりません.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-dline
とorg-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
と表され,参照されたテーブルにおいて有効です.
数式は,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未満なら十代,そうでなければ空
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
特定のフィールドに数式を割り当てるためには,‘:=’に続けて,直接フィールドに書き込みます.たとえば,‘:=vsum(@II..III)’のようにします.カーソルがフィールドにある状態で,<TAB>や<RET>,もしくはC-c C-cを押すと,入力した数式はそのフィールド専用の数式として保存され,評価された後,フィールドの表示が演算結果で置き換わります.
数式はテーブルの下にある‘#+TBLFM:’で始まる特別な行に保存されます.テーブルの中で第三行の四番目のフィールドに数式を入力すると,この数式は‘@3$4=$1+$2’のように記述されます.適当なコマンドで列と行の挿入/消去/入れ替えを行なうとき,保存された数式の中の絶対参照(相対参照では関係ありません)は,同一のフィールドを参照するために変更されます.もちろん通常の編集コマンドを用いてテーブルの構造を編集するときには実行されません.したがって,マニュアルで数式を補正しなければなりません.フィールドに数式を記入する代わりに,次のコマンドも使用できます.
org-table-eval-formula
)多数の別フィールドに数式を割り当てるために,等式の左側は特別な表現を指定できます.範囲数式を入力するショートカットはありません.これを入力するには,数式エディタ(see 数式の編集とデバッグ)を用いるか,#+TBLFM:
行に直接記述します.
$2=
@3=
@L=
は最終行を意味する.
@1$2..@4$3=
$name=
$3=
のような,シンプルな列の参照を数式に指定すると,同じ数式がその列の全てのフィールドで使用されます.次の項目を利便性の高めるための例外としています.(1)テーブルが水平ラインを含む場合は,最初の水平ラインよりも上に存在する全ての行がテーブルのヘッダーの一部であると考えられ,列の数式によって変更されません.(2)フィールドや範囲の数式からすでに値を取得しているフィールドは,列の数式は関与しません.これらの条件によって列の数式はとても使いやすくなっています.
列に数式を割り当てるためには,列のフィールドに直接記述します.イコールの後に続くように,‘=$1+$2’としましょう.同じフィールド内で<TAB>や<RET>もしくはC-c
C-cを押すと,入力した数式はそのフィールドのための数式として保存され,評価されたのち,フィールドの表示が演算結果で置き換わります.フィールドが‘=’だけの場合,以前に列で保存した数式が利用されます.各列について,org-modeは直前に利用した数式だけを記憶します.‘#+TBLFM:’行で,列の数式は‘$4=$1+$2’のように保存されます.列数式のイコールの左側には,列の名前を置くことができず,数値の列の参照か$>
を置かなければなりません.
フィールドに数式を書き入れる代わりに,次のコマンドも利用できます.
org-table-eval-formula
)
ミニバッファ,もしくは,直接フィールド内で,個々の数式を編集できます.org-modeは,テーブルに含まれるすべてのアクティブな数式が表示される特別なバッファも用意しています.数式を編集しようとすると,もし可能ならば,org-modeは参照を標準のフォーマット(B3
やD&
のような記法)に変換します.内部フォーマット(@3$2
や$4
のような記法)を用いて編集したい場合は,変数org-table-use-standard-references
を設定してください.
org-table-eval-formula
)org-table-eval-formula
)org-table-field-info
)
テーブルのフィールド内で数式を編集するときに,数式内のカーソルが置かれている参照によって指し示されたフィールドをハイライトする.
org-table-edit-formulas
)
現在のテーブルにあるすべての数式を,特別なバッファで編集する.バッファでは数式はラインごとに一つずつ表示される.カーソル位置のフィールドにアクティブな数式があるとき,カーソルエディタのカーソルはその数式をマークします.この特別なバッファの中では,org-modeは,カーソルがあるどんなフィールドや範囲参照も自動的にハイライトします.数式の編集,削除,追加が可能で,さらに次のコマンドを利用できます.
org-table-fedit-finish
)org-table-fedit-abort
)
変更を破棄して数式エディタを抜けます.C-r
org-table-fedit-toggle-ref-type
)
数式エディタの全ての参照について,(B3
のような)標準の記法と(@3$2
のような)内部の記法をトグルします.
org-table-fedit-lisp-indent
)lisp-complete-symbol
)B3
でS-<right>を押すと,C3
に変化します.これは相対参照や水平ラインの参照についても同じように動作します.org-table-fedit-line-up
)org-table-fedit-line-down
)org-table-fedit-scroll-down
)org-table-fedit-scroll-up
)テーブルのフィールドを空欄にしても,そのフィールドに結びつけられた数式は削除されません.これは数式が別な行(‘#+TBLFM:’行)に保存されているためです.次に再計算が行なわれる際に,再びフィールドに数式の結果が戻ります.フィールドから数式を削除するためには,数式を表示させて空にするか,‘#+TBLFM:’行を編集する必要があります.
‘#+TBLFM:’行は直接編集でき,変更した数式が再適用できます.これは‘#+TBLFM:’行でC-c C-cを押すか,テーブルで通常の再計算コマンドを発行することで実行できます.
数式を評価してエラーが生じた時は,フィールドの文字列が‘#ERROR’に変わります.バグを見つけるために,変数の代入と計算の過程で何が起こっているかを調べたいならば,Tbl
メニューにある数式のデバッグを有効にして,計算をやり直してください.たとえば,フィールド内でC-u
C-u C-c = <RET>と押します.すると,詳細な情報が表示されます.
テーブルの再計算は,通常は自動的に行なわれず,コマンドにより実行する必要があります.一歩進んだ機能を参照してください.少なくとも半自動で計算されます.
テーブルのある行もしくはテーブル全体を再計算するために,次のコマンドを使います.
org-table-recalculate
)org-table-iterate
)
計算結果の変化が生じなくなるまでテーブルの再計算を繰り返します.これは,計算の流れにおいて後段で計算される別フィールドの値を,すでに計算の対象となっているフィールドで利用する場合に必要になるでしょう.
もしも自動的にフィールドを再計算したい,もしくは,フィールドと列に名前を割り当てたいならば,テーブルの第一列を特別なマーキング文字を格納するために予約しておく必要があります.
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 *を使った再計算は,‘#’もしくは‘*’でマークされた行,そして,自身に対して数式が適用されているフィールドだけに影響することに気をつけてください.最初のフィールドが空になっている行には,列の数式が適用されません.
最後に,素晴らしい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
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
title
ind
x
軸として利用するテーブルの列を指定します.
deps
dep:(3
4)
とすると,第三と第四列を描画します(デフォルトでは,ind
の列を除いて他の全ての列が描画されます).
type
2d
,3d
もしくはgrid
)を指定します.
with
with
オプションで挿入される,各プロット点の表示種別を指定します.たとえば,
lines
,points
,boxes
,impluses
などで,デフォルトはlines
.
file
"
path/to/desired/output-file"
のように指定します.
labels
deps
で利用されるラベルのリストを指定します.標準では列のヘッダーが使われます(存在する場合).
line
map
3d
もしくはgrid
を指定する場合に,このオプションをt
にすると,3d
の立体的な傾斜がわかる表示ではなく,平らな表示(訳注:平面に射影した状態)でプロットします.
timefmt
script
$datafile
の記述は,プロット点を格納するファイル(訳注:org-plotが作る一時的なプロット点データ)へのファイルパスで置き換えられます.仮にこのオプションを指定しても,データファイルの内容に影響を与えることができるように,プロットの種別を制御したくなるかもしれません.
HTMLのように、Org-modeはファイル内でリンクしたり、他のファイルやUsenetの記事やメールなど、外部へリンクしたりすることができます。
Org-modeはURLのようなリンクを認識して、クリック可能なリンクにしてくれます。Org-mode上での一般的なリンクのフォーマットは以下のようなものです:
[[リンク][項目名]] または [[リンク]]
すべての括弧を入力し終えてリンクが完成すると、Org-modeは、[[リンク][項目名]]のかわりに「項目名」を、[[リンク]]のかわりに「リンク」を表示します。リンクは「org-link」で設定されたフェイスでハイライトされます。なおデフォルトのフェイスはアンダーラインになっています。表示されている部分については、直接編集することができます。項目名がない場合はリンクの編集になり、項目名がある場合は項目名の編集になることに注意してください。表示されていないリンクを編集するには、該当するリンクの上で「C-c C-l」を実行します。
表示されたテキストの始端もしくは終端にカーソルを置いて<BACKSPACE>を押すと、その場所にある(表示されていない)括弧を取り除くことができます。これによってリンクは不完全なものになり、リンクの内部は再びプレーンなテキストとして表示されます。取り除かれた括弧を再度挿入することでリンクは再び内部化され隠されます。すべてのリンクの内部的な構造を表示するには、Org->Hyperlinks->Literal
links
というメニューを使用します。
もしもリンクが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 &で、ひとつ前のポジションに戻ります。このコマンドを連続して使うことにより、更に前のポジションへと戻ることができます。
Org-modeは、通常のテキスト部分に書かれたターゲット名を、自動でリンクにすることができます。ですから、わざわざ個別のリンクを作成することなく、それぞれのテキストがターゲットにリンクされます。ラジオターゲットは、3つの角括弧で囲まれたものです。例えば、‘<<<My Target>>>’というターゲットは、通常のテキスト部分に‘my target’が登場する度にアクティブなリンクにしてくれます。Org-modeファイル内のラジオターゲットは、最初の読み込み時のみ自動的にスキャンされます。編集中にターゲットをアップデートしてリンクするには、ターゲットのところでC-c C-cを実行します。
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’)や、リンクの末端であいまいさをなくしたい場合、角括弧で囲みます。
Org-modeは正しい構文でリンクを作成したり、Org-modeのファイルにリンクを挿入したり、そのリンクをたどったりする方法を提供しています。
org-store-link
)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というキーバインディングはひとつの提案に過ぎませんインストール)。
アジェンダビュー
カーソルがアジェンダビューにあるときは、作成されたリンクは現在の行が参照するエントリーを指し示します。
org-insert-link
)一時保管されたリンクを挿入
<現在のセッションで一時保管されたすべてのリンクは、このプロンプトの履歴となっていますので、<up>や<down>(あるいは、M-p/n)を使ってこれらにアクセスすることができます。
補完の支援
<TAB>を使用した補完機能によって、リンクの省略記法で定義された接頭辞(see リンクの省略記法)を含む、‘http’や‘ftp’などのリンクを適切に挿入することができるでしょう。もし、prefixのみをタイプした後に<RET>を押すと、Org-modeは、いくつかのリンク形式35に対して詳細な補完の支援を行います。たとえば、file
<RET>をタイプすると、ファイル名の補完((または、C-u C-c
C-lをタイプします。以下を参照。)を行い、bbdb
<RET>をタイプすると、連絡先の名前を補完することができます。
org-open-at-point
)org-file-apps
を参照してください。もし、デフォルトのアプリケーションではなくEmacsでファイルを開きたい場合は、接頭辞C-uを付け、Emacsで開くことを避けたい場合は、接頭辞C-u
C-uを付けてください。カーソルがリンクではない見出し上にあるときは、見出し上のすべてのリンクとエントリーテキストを表示します。org-return-follows-link
が設定されているときは、<RET>もポイント上のリンクを開きます。
org-toggle-inline-images
)
リンクされた画像のインライン表示をトグルします。通常これはリンクに項目名がない画像のみをインライン表示するものです。すなわち、エクスポート時にインラインになる画像のことです。org-startup-with-inline-images
変数37を設定することにより、インライン画像を起動時に表示されることができます。%
org-mark-ring-push
)
現在のポジションをマークリングに格納し、現在のポジションに簡単に戻ってこられるようにします。ファイル内部でのリンクをたどるときは、自動的にこれが行われます。&
org-mark-ring-goto
)
記録されたポジションへ戻ります。ポジションは、内部リンクをたどるコマンドとC-c
%によって記録されます。このコマンドを連続して何回か使うと、記録されたポジション間を移動することができます。C-n
org-next-link
)
org-previous-link
)(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)))
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)
長い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
関数を定義することもできます。このような関数はいかなる引数も受け入れず、接頭辞付きのリンクを返します。
ファイルへのリンクには、ファイル内の特定の場所へジャンプするリンクを含ませることができます。これは、ダブルコロン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
My Target
*My Target
#my-custom-id
CUSTOM_ID
プロパティを持つ見出しへリンクします。
/regexp/
regexp
を正規表現検索します。これは、Emacsのoccur
コマンドを使って、一致するすべてを別ウインドウでリスト表示します。ターゲットがOrg-modeファイルならば、org-occur
が使われ、一致した部分について、ツリーの抽出を行います。
特殊なケースとして、ファイル名が指定されていないファイルのリンクは、現在のファイルの検索となります。たとえば、[[file:::find
me]]
は、‘[[find me]]’と同様に、現在のファイルで‘find me’を検索します。
デフォルトの検索文字列作成のメカニズムと、実際のファイル検索のメカニズムは、すべての場合でうまく動作するとは限りません。たとえば、BibTeXデータベースのファイルは、‘year=\"1993\"’のようなエントリーをたくさん有していますが、これは良い検索文字列であるとは言えません。なぜならば、BibTeXのエントリーでは、唯一の識別情報は引用キーだからです。
このような問題に直面した場合は、特定のファイルタイプに適した検索文字列を設定し、そのファイルで検索を行うカスタム関数を書くことができます。add-hook
を使用して、これらの関数は、org-create-file-search-functions
、org-execute-file-search-functions
というフック変数に付け加えられる必要があります。これらの変数についてのより詳しい情報は、ドキュメント文字列を参照してください。Org-modeは、実際にこのメカニズムをBibTeXデータベースファイルに使用しており、該当するコードを実装のサンプルとして使うことができます。org-bibtex.elというファイルを参照してください。
Org-modeではTODOリストを個別の文書として管理するわけではありません。39その変りに、TODOアイテムはノートファイルの一部として存在します。なぜならTODOアイテムはメモを書いている最中に頭に浮かぶものだからです!Org-modeでは、ツリーの中のどの項目でも簡単にマークしてTODOアイテムとするだけです。この方法により特定の情報を複数個所にもつ必要は無くなり、TODOアイテムを作成するのに使用した全文書が常に最新であることになります。
もちろん、こうした手法をとることで、あなたのノートファイルの中のあちこちに、TODOアイテムが散らばることになります。それを補うためにOrg-modeでは、やらなければならない事柄の全体を見渡す方法が提供されています。
どの見出しでも‘TODO’という言葉を前につけることで、TODOアイテムとみなします。例えば:
*** TODO サム フォーチュンに手紙を書く。
TODO項目を入力するときの最も重要なコマンドは以下のとおりです。
org-todo
),-> (マーク無し) -> TODO -> DONE --. '----------------------------------'
同じような状態の切り替えは、タイムラインとアジェンダバッファでtコマンドキー(see アジェンダのコマンド参照)を入力することで「間接的に」完了にすることもできます。
shift-selection-mode
との連携については、衝突も参照してください。変数org-treat-S-cursor-todo-selection-as-state-change
も参照してください。/ 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
org-todo-list
)
グローバルTODOリストを表示します。すべての「DONE状態以外の」TODOアイテムをすべてのアジェンダファイル(see アジェンダビュー)から集めて、一つのバッファに表示します。その新しくできたバッファは、agenda-mode
で表示され、確認や修正を加えるためのコマンドも提供されます。(see アジェンダのコマンド).
See グローバルなTODOリスト.を参照してください。org-insert-todo-heading
)TODOの状態の変更は、タグの変更をすることになることがあります。詳細については、オプションorg-todo-state-tags-triggers
のドキュメント文字列を参照してください。
デフォルトでは、マークされたTODOの状態は、TODOとDONEの2つしかありません。さらにOrg-modeは、TODOキーワード「org-todo-keywords
に指定されています。」を使って、より複雑にTODOアイテムを分類できます。特別な設定により、TODOキーワードシステムは、ファイルによって異なる働きにすることできます。
注記、タグは見出しと特にTODOアイテムを分類するもう一つの方法です。(see タグ).
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の状態の変更は、タイムスタンプと共にログをとることができます。(より詳しい情報は作業の状態変化の追跡を参照)
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」、
時には、異なるセットの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
へ。その為、まず使いたいサブグループを選ぶ方法が必要です。当然通常行うようにキーワードをタイプするか、補完、または次のコマンドを使うこともできます:
TODO
かDONE
からREPORT
、そして、二番目のサブグループのどれかの状態からCANCELED
へジャンプします。注意としてC-S-キーバインディングは、shift-selection-mode
(see 衝突)と衝突します。
DONE
に切り替えられ、さらにREPORT
になります。shift-selection-mode
と連携させる方法については、衝突を参照してください。>
もし、切り替えせずに任意の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
異なるファイルごとに、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
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
により、文字の色にするか、背景色にするか指定できます。
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)が終わるのを待つ必要があります。
org-toggle-ordered-property
)ORDERED
プロパティを現在のアイテムに対してトグルします。プロパティが、この動作に使われるのは、タグのように継承するのではなく、現在のアイテムに対してのみ動作させるためです。しかし、もし見やすいようにタグを使ってプロパティの値を記録したいのであれば、変数org-track-ordered-property-with-tag
をカスタマイズしてください。C-u C-u C-c C-t
変数org-agenda-dim-blocked-tasks
を設定すれば、依存関係のせいで閉じることのできないTODOエントリーをアジェンダビューで薄暗いフォントにして表示するか、さらに見えなくすることもできます。(see アジェンダビュー).
チェックボックスを見ることでTODOの状態の変更を妨げることもできます(see チェックボックス)。変数org-enforce-todo-checkbox-dependencies
を設定すれば、チェックされていないチェックボックスをもつエントリーがDONEになるのを妨げることもできます。
もし、より複雑な依存関係の構造が必要であれば、例えば、異なるツリーやファイルのエントリー同士の依存関係、付属モジュールのorg-depend.elを参照してみてください。
Org-modeは、TODOアイテムにDONEという完了の印をつけたときや、TODOアイテムの状態を変更したときはいつでも、自動的にタイムスタンプとメモを記録できます。かなり柔軟に設定することが可能で、キーワードごとに設定したり、ファイルやサブツリーごとに設定することもできます。タスクの時間管理についての情報は、作業に費やした時間の計測を参照してください。
一番基本的な時間の記録機能は、いつTODOアイテムが完了したかを記録することです。これは、次のようにしてください44
(setq org-log-done 'time)
この後、毎回TODO「未完了」からDONEの状態に移行したとき、見出しの後に‘CLOSED: [タイムスタンプ]’の行が挿入されます。切り替えていく間に一つのエントリーに対してTODOの状態に戻すと挿入された行はまた削除されます。タイムスタンプと一緒にメモも記録したいのであれば、次のようにしてください45
(setq org-log-done 'note)
この設定によりメモの入力を聞いてきます。そのメモは‘Closing Note’という見出しの下に挿入されます。
タイムライン「see タイムライン」とアジェンダ「see 毎週/毎日のアジェンダ」上で、lキー使用してTODOアイテムと‘CLOSED’タイムスタンプを日ごとに表示することができます。何が完了しているかのサマリも提供されます。
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にリセットします。この後、lognotedone
かlogrepeat
のようなSTARTUPキーワード、そしてTODO(!)
のような状態に特化した設定を追加して、特定のツリーに対してログを開始するようにできます。例えば
* TODO 各状態のタイムスタンプだけをログを取る :PROPERTIES: :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!) :END: * TODO WAITに切り替えられ、さらに繰り返されたときだけログを取る :PROPERTIES: :LOGGING: WAIT(@) logrepeat :END: * TODO 何もログを取らない :PROPERTIES: :LOGGING: nil :END:
Org-modeには、「habits(習慣)」と呼ばれるTODOの特別なカテゴリーの一貫性を記録するための機能があります。habitには、以下の性質があります:
org-modules
をカスタマイズすることでhabits
モジュールを有効にしてある。
STYLE
に、habit
を値として定義してある。
.+
スタイルで繰り返される間隔を表します。++
スタイルは、時間制限があるような場合に有効でしょう。例えば、週末にしなければいけないことなどです。+
スタイルは、遅れることがあるような通常の習慣ではないような場合「例:週次報告書」に適しています。
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
org-habit-preceding-days
org-habit-following-days
org-habit-show-habits-only-for-today
最後に、アジェンダバッファでKを押すことによりhabitsを一時的に使用不可にし、まったく表示させないようにできます。もう一度Kを押すと元にもどります。例えば、もし特定の前後の内容によてのみ必要なhabitsの場合は、タグのフィルタリングの影響も受けます。
もし、Org-modeよく使うのであれば、最終的にTODOアイテム量が増え、優先順位付けをした方がいいとなるかもしれません。優先順位付けはTODOアイテムの見出しに、次のように優先順位クッキーを置くことで可能になります:
*** TODO [#A] サム フォーチュンに手紙を書く。
初期値としてOrg-modeは、次の3つの優先順位付けをサポートします:‘A’、‘B’、‘C’。‘A’が一番高い優先度です。クッキーなしの場合は、‘B’の優先度として扱われます。優先順位付けは、アジェンダの順番を付けるときのみ影響します。「see 毎週/毎日のアジェンダアジェンダ外では、Org-modeで継承されたりしません。クッキーは、変数org-priority-faces
をカスタマイズすることにより、特別なフェイスを使ってハイライトすることもできます。
優先順位付けどんなアウトラインモードにも付けるとができます。つまりTODOアイテムである必要はありません。
org-priority-up
)org-priority-down
)shift-selection-mode
との相互利用に関しては次を参照してください。衝突
変数org-highest-priority
、org-lowest-priority
、org-default-priority
を設定することで、変更できる優先度の範囲を変えることができます。バッファごとに、「上限、下限、既定値」の設定を以下のようにすることができます。「必ず一番上の優先度の文字が、一番下の優先度よりもアルファベットの並びで前の文字であるようにしてください。」:
#+PRIORITIES: A C B
通常、大きなタスクは小さくて管理しやすいサブタスクに細分化することをお勧めします。これは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 チェックボックス」
プレーンなリスト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
プロパティが設定されている場合、チェックボックスは、連続でチェックされていなければなりません。上部のチェックボックスがチェックされていない状態でその下部のチェックボックスをチェックしようとするとエラーがスローされます
org-toggle-checkbox
)
チェックした状態をトグルするか「前置引数と実行すると」チェックボックスを作成します。ダブル前置引数だと、‘[-]’が設定されます。これは、中間の状態を表します。C-x
C-b
org-toggle-checkbox
)
チェックした状態をトグルするか「前置引数と実行すると」チェックボックスを作成します。ダブル前置引数だと、‘[-]’が設定されます。これは、中間の状態を表します。
org-insert-todo-heading
)org-toggle-ordered-property
)
ORDERED
プロパティを設定します。これは、連続でチェックボックスがチェックされていなければならないと指定します。プロパティが使用されます、なぜならこの指定はローカルに影響するべきでタグのように継承されるないからです。しかし、見やすいようにタグを使ってプロパティの値を記録したい場合は、org-track-ordered-property-with-tag
変数をカスタマイズしてください。#
org-update-statistics-cookies
)
現在のアウトライン内の統計クッキーを更新します。C-u引数と呼び出されるとファイル全体を更新します。C-c
C-cでチェックボックスをトグルした場合とM-S-<RET>で新しいチェックボックス項目が作成された場合、チェックボックス統計クッキーは、自動的に更新されます。TODO状態を変更すると統計クッキーも更新されます。手動でチェックボックスや項目を削除したり、それらを追加したり変更した場合は、このコマンドをつかって状態を更新してください。もしくは、単にコマンドを二度トグルしてください「C-c
C-cチェックボックスを作成など」。
相互に関係する情報のためにコンテクストやラベルをつけるためのすばらしい方法の一つは見出しにタグを対応づけることです.Org-modeはタグについて幅広く対応しています.
全ての見出しはタグのリストを取ることができて,タグは見出しの最後に置かれます.タグはいわゆる普通の単語で利用される文字や数字,‘_’,‘_’を利用できます.タグはコロンで始まりコロンで終わらなければなりません.例えば,‘:work:’です.複数のタグはこのように書きます.‘:work:urgent:’.タグはデフォルトでは太字のフェイスで見出しと同じ色で表示されます.TODOのキーワード(see TODOキーワードのフェイス)と同じように変数org-tag-faces
を変更することで特別なフェイスを設定することも可能です.
タグはアウトラインツリーの階層構造を利用します.もしある見出しに特定のタグがついていれば,全ての下位レベルにタグが継承されます.以下に例を示します:
* 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-inheritance
,org-tags-exclude-from-inheritance
を利用します.
タグの継承が有効の場合にタグの検索で見出しが一致したとき,その見出しの全てのサブツリーも同じように一致します53.始めにタグが一致したサブツリーのみを表示したいのであれば,変数org-tags-match-list-sublevels
を設定してください
(非推奨).
簡単に見出しの最後へタグは入力することができます.コロンの次にM-<TAB>でタグの補完をします.他にもタグの入力のための特別なコマンドが以下に続きます:
org-set-tags-command
)org-tags-column
の列に整列されます.数引数(C-u
prefix)をつけて呼び出すと,カレントバッファの全てのタグがきれいに見えるように整列されます.TAGSは自動的に昇格や降格した後に再整列され,TODOの状態が変わります(see TODOの基本).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.このインタフェースでは以下のキーが利用できます.
このメソッド(特別なインタフェース)であなたはとても少ないタイプで見出しにタグをつけられます.上記の設定で,現在のタグをクリアして,‘@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を追加してはじめてそのウィンドウが表示されるようになります.
一度タグシステムが設定されると,関連する情報を特殊なリストに集めるのに使われます.
org-match-sparse-tree
)org-tags-view
)
全てのアジェンダファイルにおいてタグにマッチしたものの一覧を作成する.See タグとプロパティとのマッチング. M
org-tags-view
)
全てのアジェンダファイルにおいてタグにマッチしたものの一覧を作成する.ただしTODOの項目に限定し,サブツリーの項目の検索を強制する(変数org-tags-match-list-sublevels
参照).
これらのコマンドは全てマッチ文字列を問います.マッチ文字列はタグ‘boss’と‘urgent’を含み,‘project1’を含まないものを検索する‘+boss+urgent-project1’や,タグ‘Kathy’または‘Sally’がつけられているエントリーを検索する‘Kathy|Sally’のような基本的な論理構造が使用可能です.検索文字列の全ての構文はリッチでTODOキーワードやエントリーのレベル,プロパティにもマッチします.完全な説明と多くの例はタグとプロパティとのマッチングを見てください.
プロパティはエントリーに関連付けられたキーと値を持つペアのあつまりです。Org-modeでは、プロパティのための主要なアプリケーションが2つあります。1つ目は、プロパティはタグのようですが値を持つことです。2つ目は、Org-modeのバッファで(とても基本的な)データベース機能を実装するためにプロパティを使えることです。1つ目のアプリケーションの例に、ソフトウェアのリリース計画とバグを文章化するファイルを管理することを想像して下さい。:release_1:
、:release_2:
のようなタグを使う代わりに、:Release:
というプロパティを使い、異なるサブツリーの中に1.0
や2.0
のような異なる値を持たせれば良いのです。プロパティの2つ目のアプリケーションの例に、音楽CDのトラックを管理する事を想像して下さい。そこではアルバム名、アーティスト名、リリース日、トラックの数などがプロパティとなるでしょう。
プロパティはカラムビューで便利に編集、閲覧できます(see カラムビュー)。
プロパティはキーと値のペアです。それらは、名前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のファイルに継承されます。
pcomplete
)org-set-property
)
プロパティを設定します。プロパティ名と値の入力を促します。必要なら、プロパティの引き出しがさらに作られます。
org-property-action
)
プロパティの引き出しの中にカーソルがあるとき、プロパティコマンドを実行します。C-c
s
org-set-property
)
現在のエントリにプロパティを設定します。プロパティと値の両方共、補完を使って入力できます。org-property-next-allowed-value
)org-property-previous-allowed-value
)org-delete-property
)
現在のエントリからプロパティを削除します。D
org-delete-property-globally
)
プロパティを現在のファイルにある全てのエントリからグローバルに削除します。C-c
c
org-compute-property-at-point
)
ポイントにあるプロパティを最も近い列のフォーマット定義からオペレータやスコープを使って計算します。
以前の章で述べた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 エントリのあるファイル名
プロパティに基づいて選択した特別なリストやツリーの抽出を作成するために、タグ検索(see タグの検索)の場合と同じコマンドが使えます。
org-match-sparse-tree
)org-tags-view
)org-tags-view
)org-tags-match-list-sublevels
参照)のみチェックします。
検索文字列のための文法は、タグとプロパティとのマッチングで説明されています。
1つのプロパティに基いて抽出したツリーを作成するための特別なコマンドもあります。
Org-mode文章のアウトライン構造はプロパティの継承モデルを適用しています。ツリーの親があるプロパティを持っているならば、子はこのプロパティを継承します。Org-modeはこれをデフォルトで有効としていません。これはプロパティの検索を遅くしてしまうためとあまり必要とされないためです。しかしながら、継承が役立つ場面があるならば、変数org-use-property-inheritance
を設定する事で有効とできます。この変数は、全てのプロパティを親から継承するt
、継承されるべきプロパティのリスト、継承されるプロパティにマッチする正規表現を設定できます。もしプロパティが値‘nil’を持つならば、継承検索がこの値で停止しnil
を返すように、明示的に未定義のプロパティであると解釈されます。
Org-modeは、継承がハードコードされているプロパティがいくつかあります。少なくともそれらを使う特別なアプリケーションがあります。
COLUMNS
:COLUMNS:
プロパティは、カラムビュー(see カラムビュー)のフォーマットを定義します。:COLUMNS:
プロパティが定義されているレベルがカラムビューテーブルの開始地点として使われるという意味で継承されます。そして、列表示が有効である場所とサブツリーの場所とは無関係です。
CATEGORIES
:CATEGORY:
プロパティを通して設定されたカテゴリがサブツリー全体に適用されます。
ARCHIVE
:ARCHIVE:
プロパティは、サブツリー全体のアーカイブ位置を定義します(see サブツリーを移動する)。
LOGGING
アウトラインツリーにあるプロパティを閲覧、編集するための最も良い方法はカラムビューです。カラムビューでは、各アウトラインノードがテーブル行に変換されます。このテーブルにある列がエントリのプロパティへのアクセスです。Org-modeは、各項目の見出し上にテーブル構造をオーバレイすることで列を実装します。見出しはテーブル列に変換されますが、アウトラインツリーの見た目もまだ変えられます。例えば、CONTENTS ビュー(S-<TAB>S-<TAB>、もしくは、カラムビューがアクティブであるときに単純にc)にスイッチする事でコンパクトなテーブルを得られますが、まだ各見出し以下のエントリを開いたり、読んだり、編集したりもできます。また、ツリーの抽出コマンドを実行した後にカラムビューに切り替える事もでき、この方法では選択した項目のみのテーブルを得ます。カラムビューは利用可能な複数のファイルから選択した項目を集めたクエリのあるアジェンダバッファ(see アジェンダビュー)でも動作します。
最初にカラムビューを設定するために、カラムを定義する必要があります。これはカラムフォーマット行を定義する事によってなされます。
カラムフォーマットを定義するために、次のように行を記載します。
#+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
指定したツリーに適用するだけのフォーマットを指定するために、:COLUMNS:
プロパティをそのツリーの一番上のノードに追加します。例えば、
** カラムビューの最初のノード :PROPERTIES: :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO :END:
もし:COLUMNS:
プロパティがエントリに現れると、そのエントリ自身とそれ以下のサブツリー全体の列を定義します。列定義は文章の階層構造の一部なので、全てのサブレベルに十分一般的なレベル1の列を定義でき、また、ツリーのより深い部分を編集するとき、より下位の指定された列を定義できます。
列定義は、列の属性の集りです。一般的な定義は以下のようになります。
%[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インターバルの合計をリストします。
org-columns
)#+COLUMNS
定義を使う事によりファイル全体に対して有効となります。カーソルがアウトラインの内側のどこかにあるならば、このコマンドはフォーマットを定義する:COLUMNS:
プロパティをポイントから上部の階層に向かって検索します。1つ見つかったとき、カラムビューテーブルは:COLUMNS:
プロパティを含むエントリではじまるツリー用に設立されます。そのようなプロパティが見付からないときは、フォーマットは#+COLUMNS
行もしくは、変数org-columns-default-format
から取得され、カラムビューは現在のエントリとそのサブツリーのために設置されます。org-columns-redo
)org-columns-redo
)org-columns-quit
)org-columns-next-allowed-value
)org-columns-previous-allowed-value
)org-columns-edit-value
)org-columns-set-tags-or-toggle
)
チェックボックスがあるならば、それを切り替えます。org-columns-show-value
)org-columns-edit-allowed
)org-columns-narrow
)org-columns-widen
)org-columns-new
)org-columns-delete
)カラムビューはバッファへのオーバレイのみなので、直接にエクスポートや印字ができません。カラムビューをキャプチャしたいならば、columnview
ダイナミックビュー(see ダイナミックブロック)を使って下さい。このブロックのフレームは以下のように見えます。
* The column view #+BEGIN: columnview :hlines 1 :id "label" #+END:
ダイナミックブロックを更新するには以下のコマンドを使用します。
:id
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
のみである行をスキップします。
org-insert-columns-dblock
)
カラムビューをキャプチャするダイナミックブロックを挿入します。そのビューのスコープやIDの入力を促されます。C-c
C-u
org-dblock-update
)
ポイント下のダイナミックブロックを更新します。カーソルはダイナミックブロクの#+BEGIN
行にある必要があります。C-c C-x
C-u
org-update-all-dblocks
)
全てのダイナミックブロックを更新します(see ダイナミックブロック)。複数のクロックテーブルブロックや列キャプチャブロック、その他のダイナミックブロックがバッファにあるとき便利です。
カラムビューテーブルに計算式を追加し、テーブルの前にプロットする命令を追加できます。これらはブロックの更新があっても生き残ります。テーブルの後に#+TBLFM:
があるならば、テーブルは実際に更新の後に自動的に実際に再計算されます。
テーブルの中でプロパティ値を処理したりキャプチャする別の方法はEric Schulteのorg-collector.elによりできます。それは寄付されたパッケージ56です。あるスコープにあるエントリからプロパティを集めるための一般的なAPIやテーブルやダイナミックブロックの中に挿入する前にそれらの値を処理する任意のLisp式を提供します。
プロパティにアクセス、変更するための完全なAPIがあります。このAPIはプロパティと共に動作するために、また、それらを元とした機能を実装するためにEmacs Lispプログラムから使われます。詳細な情報はプロパティAPIを使うを参照して下さい。
プロジェクトのプランニングを補助するため、TODOアイテムは日付または時刻でラベリングすることができます。このような形でフォーマットされた日付および時刻の情報を含む文字列はOrg-modeではタイムスタンプと呼ばれています。一般的な用法では、タイムスタンプは何かを作成したときや最後に変更したときの記録を示しますので、若干紛らわしいかもしれませんが、Org-modeではタイムスタンプという用語をより広い意味で用います。
タイムスタンプは、例えば‘<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>
* 学校までサムを迎えに行く<2007-05-16 Wed 12:30 +1w>
* 毎月第2木曜日のオタクの集まり <%%(diary-float t 4 2)>
** アムステルダムでのミーティング <2004-08-23 Mon>--<2004-08-26 Thu>
* ジリアンが5度目の遅刻 [2006-11-01 Wed]
Org-modeがタイムスタンプを認識するためには、特定のフォーマットを用いる必要があります。以下のコマンドのいずれを用いても正しいフォーマットでタイムスタンプを生成することができます。
org-time-stamp
)
日付を入力して、それに対応するタイムスタンプを挿入します。既にバッファ内に存在するタイムスタンプにカーソルが置かれている場合は、このコマンドは新たなタイムスタンプを挿入する代わりに、既にあるタイムスタンプを変更します。このコマンドを2回連続で使用すると、時間間隔を指定することができます。!
org-time-stamp-inactive
)
コマンドC-c
.と同様ですが、アクティブでない(アジェンダのエントリーに反映されない)タイムスタンプを生成します。
org-time-stamp-rounding-minutes
のオプションを参照して下さい。<
org-date-from-calendar
)
カレンダーのカーソルに対応したタイムスタンプを挿入します。>
org-goto-calendar
)
現在時刻のEmacsカレンダーにアクセスします。現在の行に既にタイムスタンプが存在する場合は、それに対応する日付にアクセスします。C-o
org-open-at-point
)
タイムスタンプおよび時間間隔で指定された日付でアジェンダにアクセスします(see 毎週/毎日のアジェンダ)。org-timestamp-down-day
)org-timestamp-up-day
)org-timestamp-up
)org-timestamp-down-down
)org-evaluate-time-range
)
開始日時と終了日時の差を計算することにより、時間間隔を計算します。前置引数を指定することにより、計算結果をタイムスタンプの後に挿入できます(テーブルの中では隣の列に挿入されます)。
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。
日付や時間を表現するため、Org-modeはISO8601で定義されているような標準的なISOの記法を使用しています。もしこの記法に不慣れで、別の日付や時間の記法のほうが好みである場合は、変数org-display-custom-times
およびorg-time-stamp-custom-formats
をカスタマイズすることができます。
org-toggle-time-stamp-overlays
)
カスタムフォーマットの日付および時間の表示をトグルします。
Org-modeは文字列のスキャンニングのためにデフォルトのフォーマットを必要とするため、カスタムフォーマットの日付および時刻は標準フォーマットを置き換えません。その代わりに、テキストのプロパティを用いて標準フォーマットに上書きされます。これが原因で以下のような動作が生じます。
プランニングを補助するため、タイムスタンプの前に所定のキーワードを置くことができます。
デッドラインが付けられた場合は、そのタスクはアジェンダの中に記載されます。それに加えて、今日のアジェンダはデッドラインが近づいたり、それを超過したりした場合に警告を発します。警告は期限のorg-deadline-warning-days
だけ前から表示され、エントリがDONEとされるまでは消えません。以下に例を示します。
*** TODO ガイド誌の地球についての記事を書く。 担当編集者は[[bbdb:Ford Prefect]] DEADLINE: <2004-02-29 Sun>
以下の構文を用いることにより、個別のデッドラインについて異なる警告のリードタイムを指定することができます。以下は5日間の警告期間を指定する場合の例ですDEADLINE:
<2004-02-29 Sun -5d>
。
見出しは指定された日付の下に記載されます61。それに加えて、スケジューリングされた日付を超過した場合には今日のリストにエントリがDONEとなるまでリマインダが表示され続けます。すなわち、タスクは完了するまで自動的に後回しにされます。
*** TODO トリリアンに大晦日のデートについて電話する。 SCHEDULED: <2004-12-25 Sat>
重要:Org-modeで項目をスケジューリングすることは、ミーティングをスケジューリングすることと同様であるという理解は正しくありません。ミーティングをセットするのは単なるアポイントですが、このような場合はエントリーにはプレーンなタイムスタンプを使用し、日付が来れば項目が表示されるように設定するべきです。これはユーザーがしばしば誤解する点です。Org-modeではスケジューリングは何らかのアクションアイテムに取りかかる際に、日付を設定することを意味します。
スケジューリングやデッドラインの項目には、繰り返しを含むタイムスタンプを使用することが可能です。Org-modeは、タイムスタンプが繰り返し日付の直近の日付を表すものと推測して事前あるいは事後の警告を発します。しかし、スケジューリングやデッドラインにおいては<%%(diary-float
t
42)>
のような日記のS式項目は限定的にしか使用できません。Org-modeはこれらS式項目の内部構造について十分理解していないため、事前および事後の警告を発することはできません。ただし、S式項目と一致したそれぞれの日付に項目を表示することは行われます。
以下のコマンドにより、項目にデッドラインまたはスケジュールを瞬時に挿入62することができます。
org-deadline
)
タイムスタンプと‘DEADLINE’キーワードを挿入します。挿入は見出しの直下の行に対して行われます。前置引数を伴って呼ばれた場合は、エントリーから既に存在するデッドラインが消去されます。変数org-log-redeadline
63に対応して、既に存在するデッドラインを変更する際にノートをとることができます。C-s
org-schedule
)
タイムスタンプと‘SCHEDULED’キーワードを挿入します。挿入は見出しの直下の行に対して行われます。CLOSEDのタイムスタンプは全て消去されます。前置引数を伴って呼ばれた場合は、エントリーからスケジューリングの日付が消去されます。変数org-log-reschedule
64に対応して、既に存在するスケジューリングを変更する際にノートをとることができます。C-x C-k
org-mark-entry-for-agenda-action
)
現在の項目をアジェンダのアクションのためにマークします。このように項目をマークした後で、アジェンダまたはカレンダーを開いて適切な日を探すことができます。選択した日付の上にカーソルを置いてk
sあるいはk dを入力することにより、マークされた項目にスケジュールを設定できます。d
org-check-deadlines
)
全てのデッドラインのうち、既に過ぎているものとorg-deadline-warning-days
以内に期限となるものを抽出したツリーを作成します。前置引数C-uにより、ファイル内の全てのデッドラインを表示します。前置引数で数値を指定すると、指定した分だけ先のデッドラインを表示します。例えば、C-1
C-c / dとすると明日期限となる全てのデッドラインを表示します。b
org-check-before-date
)
指定された日より前のデッドラインを抽出したツリーを作成します。a
org-check-after-date
)
指定された日より後のデッドラインを抽出したツリーを作成します。
タスクの中には、何度も繰り返し行うものがあります。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コマンドがあります。この機能は見出し位置と階層の変更で解説されています。
Org-modeでは、プロジェクトの中で特定のタスクを実行するのにかかった時間を計測することができます。ある項目について取りかかる時に、計測を開始します。そのタスクを中断するときやタスクが終了した時に計測が終了し、対応する時間間隔が記録されます。同時に、あるプロジェクトの全てのサブツリーでかかった時間の合計が計算されます。さらに、最近に時間が計測されたタスクが記憶されているため、その時点で取りかかっている複数のタスク間を素早く移動することができます。
Emacsセッションでの経過時間の履歴を保存するためには、以下のコマンドを使います。
(setq org-clock-persist 'history) (org-clock-persistence-insinuate)
Emacsの再開後に新しいタスクの計測を始めると、不完全な時計67が表示され(see 空き時間の解決)、それについて何をするかを入力するように促されます。
org-clock-in
):LOGBOOK:
という引き出しに格納されます(変数org-clock-into-drawer
についても参照のこと)。前置引数C-uと共に呼ばれた場合は、最近時間が計測されたタスクのリストからタスクを選択します。2個の前置引数C-u
C-uが入力された場合は、現在位置のタスクの計測を開始し、そのタスクをデフォルトに指定します。デフォルトのタスクは、時間計測の選択をする場合に常にリストの中に表示され、文字dが付けられます。CLOCK_MODELINE_TOTAL
を変更します。この中には現在計測中の時刻のみ表示するcurrent
、今日計測された全ての時間を表示するtoday
(変数org-extend-today-until
についても参照)、全ての時間を表示するall
、デフォルトの設定であるauto
などがあります70。org-clock-out
)
時間の計測を終了します(クロックアウト)。これにより、時間計測が開始されたのと同じ場所にもう一つのタイムスタンプが挿入されます。同時に、計測された時間間隔が開始時刻と終了時刻の後に‘=>
HH:MM’の形式で挿入されます。クロックアウトのタイムスタンプ作成時にノートを追加するには、変数org-log-note-clock-out
を参照して下さい71。C-e
org-clock-modify-effort-estimate
)
現在時間を計測しているタスクについて、工数見積もりをアップデートします。
C-y
org-evaluate-time-range
)
タイムスタンプの一つを変更した後で、時間間隔を更新します。これはタイムスタンプを手動で変更した場合にのみ必要です。S-<cursor>キーにより変更した場合には、自動的に再計算されます。C-t
org-todo
)
TODOの項目をDONEに変更することにより、その項目で時間が計測されている場合には自動的に停止します。C-x
C-x
org-clock-cancel
)
現在の時間計測をキャンセルします。これは間違って時間を計り始めてしまった場合や、結果的に意図したタスク以外を行ってしまった場合に便利です。C-x
C-j
org-clock-goto
)
現在クロックイン中のタスクの見出しにジャンプします。前置引数C-uにより、最近時間が計測されたタスクから目的のタスクを選択します。C-x C-d
org-clock-display
)
現在のバッファの各サブツリーからの時間のサマリーを作成します。これによりそれぞれの見出しの後ろに時間が上書きされ、その見出しの中で下位の見出しも含めて記録された時間の合計が表示されます。表示の切り替えにより、ツリーの各項目を確認できますが、バッファを変更した場合やC-c
C-cを入力した場合は時間の上書きは消えてしまいます(変数org-remove-highlights-with-change
)を参照)。
タイムライン(see タイムライン)およびアジェンダ(see 毎週/毎日のアジェンダ)の中でキーlを入力することにより、その日のうちに完了したタスクがどれかを表示することができます。
Org-modeは、時間計測の情報をもとにかなり詳細なレポートを作成することができます。このようなレポートはクロックテーブルと呼ばれており、その名の通りOrg-modeのテーブルまたはその組み合わせにより作成されます。
org-clock-report
)
現在のファイルにOrg-modeテーブル形式の計測時間レポートを含む動的ブロック(see ダイナミックブロック)を挿入します。前置引数とともに呼ばれた場合は、現在の文書の最初のクロックテーブルに移動し、それを更新します。C-c
C-u
org-dblock-update
)
現在位置の動的ブロックを更新します。カーソル位置は動的ブロックの#+BEGIN
行の中に位置している必要があります。C-c C-x
C-u
org-clocktable-try-shift
):block
の時間間隔を変更し、テーブルを更新します。このコマンドを使用するには、カーソルが#+BEGIN:
clocktable
行にある必要があります。例えば:block
がtoday
の場合、このコマンドにより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
ある項目について作業を開始したあとで、例えば電話を取る場合などで一時的にコンピュータの前を離れると、その時間について現在の経過時間から差し引いたり、他の項目に加えたりして「解決」する必要が生じます。
変数org-clock-idle-time
を適当な整数値(例えば10や15)に設定することにより、設定時間を超える休止のあとで戻ってきた場合にEmacsはアラートを出し、その休止時間をどのように処理するか尋ねます74。休止から戻った時点で幾つか質問が表示され、実際にどの程度休止時間があったか(その時点までの計測時間が随時表示されます)を入力すると同時に、休止の扱いについて以下のような選択が可能です。
空き時間について、現在の計測時間から差し引いたあとで別の計測項目に追加したい場合にはどうすれば良いでしょうか。その場合は、差し引いたあとに単純に次のタスクの計測を開始して下さい。Org-modeは差し引かれた時間があることを記憶していて、次の時間計測を始める際にその時間を足し込むかを尋ねます。
次のようなケースでも、時間解決機能が魔法のような働きをします。あなたがタスクの時間計測をしながらご機嫌に作業をすすめていると、突然飼い猫がネズミを追いかけて、それを見たハムスターが驚いてUPSの電源装置に衝突してしまったとしましょう!あなたは全てのバッファを失うことになりますが、オートセーブ機能のおかげでOrg-modeで行った最近の変更は保持され、途中であった時間計測の時間も保持されています。
Emacsを再開してタスクの計測を開始すると、Org-modeは最後のセッションで計測が終了されていない半端の時間計測があることに気がつきます。そのようなタスクについては、計測の開始時刻を不明な時刻の始点として、その間の時間をどのように解決するかについて尋ねます。その際の考え方や挙動は空き時間の処理方法と全く同じで、単に空き時間ではなくリカバリの際に発生しているだけなのです。
Org-modeのアジェンダが半端時間を絶えずチェックしているファイルのリストは、M-x org-resolve-clocksにより確認することができます。
詳細な作業計画を立てて仕事を行いたい場合や、仕事の工数の見積もりを作成する必要がある場合には、エントリに工数見積もりを割り当てたいと思うかもしれません。また、同時に時間の計測を行う場合には、あとで見積もった時間数と実際にかかった時間を比較したいと思うかもしれません。それは見積もりの精度を上げる良い方法でもあります。工数の見積もりは専用のプロパティである‘Effort’に保存されます75。エントリに工数を追加するには、以下のようなコマンドを用います。
org-set-effort
)
現在のエントリについて工数の見積もりを行います。前置引数に数値を指定することにより、N番目の数値に指定します(下記の例を参照)。このコマンドはアジェンダからもeキーを押すことによりアクセスできます。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回キーを押すことにより空いている時間間隔に合うように項目を絞り込むことができます。
例えば会議やビデオ閲覧時にノートをとる際など、開始時からの経過時間がわかると便利な場合があります。Org-modeはそのような場合に使える相対時間タイマー機能を持っており、時間を含むノートを簡単に作ることができます。
org-timer
)
バッファに相対時間タイマーを挿入します。最初に使う際にはタイマーが開始されます。前置引数と共に呼ばれた場合には、タイマーがリスタートされます。C-x
-
org-timer-item
)
現在の相対時刻での記述項目を挿入します。前置引数と共に呼ばれた場合は、タイマーの時刻が0にリセットされます。org-insert-heading
)org-timer-start
)
バッファに何も挿入せずにタイマーをリセットします。デフォルトではタイマーは0にリセットされますが、前置引数C-uと共に呼ばれた場合は、指定された時間からタイマーが始められます。ユーザーは開始時間を入力するよう促されます。同じ位置に既にタイマー文字列がある場合には、その時間がデフォルトとして指定されます。そのため、このコマンドは休憩時間のあとなどでノート取りを再開する場合などに用いることができます。2つの前置引数C-u
C-uと共に呼ばれた場合は、アクティブなリージョンにある全てのタイマー文字列を一定の時間だけ変化させます。これはタイマーを正しい時刻に開始できなかった場合、タイマー文字列を一度に修正する場合に使用できます。
Org-modeバッファからorg-timer-set-timer
を呼ぶことにより、カウントダウンタイマーが利用できます。アジェンダバッファの場合は<;>、その他は<C-c
C-x ;>により実行できます。
org-timer-set-timer
により、ユーザーに時間間隔を入力するように促し、モード行にカウントダウンタイマーを表示します。org-timer-default-timer
によりデフォルトのカウントダウン値を設定します。前置引数で数値を指定することで、デフォルトの値が上書きされます。
管理システムにおける重要な点の一つとして、新しいアイディアやタスクを素早くキャプチャし、それらを参考資料と連携する能力があることです。Org-modeではキャプチャと呼ばれるプロセスを用いて行います。また、タスクに関係するファイル(attachments)を特別なディレクトリに保存することがも可能です。一度システムへ取り込むと、タスクとプロジェクトを移動させる必要があります。完了したプロジェクトツリーをアーカイブファイルへ移動することで,システムをコンパクトで速く保つことが可能です。
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はそれをテンプレートなどで強化しました。
以下のカスタマイズはノートを取るデフォルトのファイルと新しい素材をキャプチャするためのグローバルなキー77
(setq org-default-notes-file (concat org-directory "/notes.org")) (define-key global-map "\C-cc" 'org-capture)
org-capture
)
org-caputre
コマンドを呼びます。このキーバインドはグローバルで,デフォルトではアクティブになっておらず,インストールする必要があることに注意が必要です。もしテンプレートがあるならば
defined see キャプチャテンプレート, これらのテンプレートの選択か、デフォルトのテンプレートを使用した新しい Org
アウトラインノードが使用されます。
org-capture-finalize
)org-capture-refile
)
ノートを別の場所に差し替える(see ノートの再配置)ことでキャプチャプロセスを仕上げます。これは通常の差し替えコマンドが実行されることを認識してください。したがってこのコマンドを実行するときのカーソル位置が重要です。もし親や小を持つツリーを挿入する場合、まずカーソルを親へ移動してください。このコマンドに渡された接頭辞引数はすべてorg-refile
コマンドに渡されます。
org-capture-kill
)org-capture
をアジェンダからk
cキーの組合せを用いた特別な方法で呼ぶこともできます。この方法では、選択されたキャプチャテンプレートに挿入されるタイムスタンプは、現在の日付ではなくアジェンダ内のカーソルがある位置の日付がデフォルトになります。
最後にキャプチャが保存された場所を探すには、org-capture
をプレフィックスコマンドと一緒に使用します。
テンプレートは異なる種類のキャプチャアイテムや、異なる場所へ使用することができます。最も簡単にそのようなテンプレートを作る方法、カスタマイズインターフェースを通じて行うことです。
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")))
それではテンプレートを定義するための要素について述べています。org-capture-templates
中にあるそれぞれのエントリーは以下の項目から構成されるリストです。
"a"
はaキーだけで選択するテンプレートであり、"bt"
は2つのキーで選択します。幾つかのキーを使う場合、同じ接頭辞キーを持つキーはリストの中で連続している必要があり、以下に例をあげるような、接頭辞キーを表す2つの要素を持つエントリーをその前に置きます。
("b" "買い物リストのためのテンプレート")
もしCキーにテンプレートを定義していなければ、このキーでこの複雑な変数のカスタマイズバッファを開きます。
entry
item
checkitem
table-line
:prepend
と:table-line-pos
プロパティに依存します。(下記参照)
plain
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")
(file+function "path/to/file" function-finding-location)
(clock)
(function function-finding-location)
(file
"path/to/template")
を使用します。詳細をいかに示します。
:prepend
:immediate-finish
:empty-lines
:clock-in
:clock-keep
:clock-resume
:clock-keep
は:clock-resume
より優先されることに注意が必要です。もしどちらの設定もt
に設定された場合、現在の時計が動き、一つ前の時計は再開されません。
:unnarrowed
:kill-buffer
テンプレート自身の中では、特別な%-エスケープ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
テンプレート展開後のカーソル位置のために以下を用います。
%? テンプレートを完了したあと、カーソル位置をここに移動します。
参照すべきものをアウトラインノートやタスクと連携させることは大抵役立ちます。小さなプレーンテキストの塊は単純にプロジェクトのサブツリーとして保存可能です。ハイパーリンク(see ハイパーリンク)はあなたのコンピュータやクラウドなどにあるファイル、例えばプロジェクトに関連するemailやソースコードファイルとの連携を確立します。その他の方法として、attachmentsがあります。これはアウトラインノードの属するディレクトリにあるファイルです。これらのディレクトリはdataディレクトリの中に位置し、あなたのOrgファイルが保存されているディレクトリと同じディレクトリの中にある81。もしこのディレクトリをgit
init
で初期化した場合、Org-modeは変更点を見つけた時に自動的にそれらをコミットします。添付システムはJohn
Wiegleyの貢献によってOrg-modeへ追加されました。
もしそれがより良い方法に思える場合は、エントリーへディレクトリを添付することも自身の選択で可能です。子エントリーは親から添付ディレクトリを受け継ぐため、サブツリー全体が同じ添付ディレクトリを使うことになります。
org-attach
)org-attach-attach
)org-attach-method
によって複製、移動、リンクされます。ハードリンクはすべてのシステムでサポートされていないことに注意が必要です。
org-attach-new
)org-attach-sync
)org-attach-open
)org-file-apps
に従います。詳細は、ハイパーリンクを辿るための情報(see リンクの扱い)を参照してください。
org-attach-open-in-emacs
)org-attach-reveal
)org-attach-reveal-in-emacs
)org-attach-delete-one
)org-attach-delete-all
)org-attach-set-directory
)ATTAH_DIR
プロパティに代入することで動作します。
org-attach-set-inherit
)ATTACH_DIR_INHERIT
プロパティをセットします。これによって子も親と同じディレクトリを添付として使用します。
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’をヘッダーにもつ新しいエントリーを生成します。
org-feed-update-all
)
org-feed-alist
に設定されたフィードからアイテムを収集し、上記のように振る舞う。G
org-feed-goto-inbox
)
はフィード名を入力し、そのフィードに設定されたインボックスへ移動します。
幾つかの見出しでは、Org-modeは‘FEEDSTATUS’という引き出しを作成します。これはフィード中にあるアイテムのステータス情報を保存しています。なんども同じアイテムが追加されないためには、‘FEEDSTATUS’をファイルの引き出しの中に追加することが必要です。
#+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
Atomフィードの読み方などのより詳しい情報は、org-feed.elを御覧ください。また、org-feed-alist
のドキュメント文字列もあります。
Org-modeを扱うためのプロトコルを外部のアプリケーションから、emacsserverを通じてEmacsに渡すことができます。例えば、ウェブブラウザーのブックマークをキャプチャ(see キャプチャ)を使って現在のページへのリンクとしてOrg-modeに送り、新しいノートを作るように設定できます。または、Emacsに現在ウェブブラウザーで開いているウェブサイトのローカルにあるソースファイルを開くようなブックマークを作ることも出来ます。詳細な説明や設定方法はhttp://orgmode.org/worg/org-contrib/org-protocol.phpを御覧ください。
キャプチャしたデータを見なおしているとき、幾つかのエントリーをプロジェクトなどの異なるリストへ移動したい時があるでしょう。カットし、正しい位置をさがし、ノートを貼り付けるのは面倒です。これを単純にするには、以下に示す特別なコマンドを使います。
org-refile
)org-reverse-note-order
に依存して、サブアイテムの先頭か最後のどちらかに挿入されます。org-refile-targets
変数をご覧ください。もし場所をアウトラインのパスをファイルパスのような補完で選択したければ、org-refile-use-outline-path
とorg-outline-path-complete-in-steps
変数をご覧ください。もしリファイルするノードの親ノードをその場で作れるようにしたいときは、org-refile-allow-creating-parent-nodes
変数をご覧ください。org-log-refile
変数82がセットされている場合、タイムスタンプやノートがエントリーがリファイルされたときに記録されます。C-c C-w
org-refile-goto-last-stored
)
org-refile
が最後に木を移動させた場所に移動します。
org-refile-cache-clear
)対象のキャッシュを削除します。リファイル対象のキャッシュはorg-refile-use-cache
を設定することで設定します。コマンドに新しい対象を見せるために、このコマンドでキャッシュを削除する必要があります。
(サブ)ツリーとして表現されたプロジェクトが終わった時、ツリーを外に移動し、それがアジェンダに現れない様にしたいでしょう。アーカイブは活動中のファイルをコンパクトにし、アジェンダビューを作るようなグローバルな検索を早くするために重要です。
org-archive-subtree-default
)org-archive-default-command
変数で指定されたコマンドを使ってアーカイブします。
もっとも一般的なアーカイブアクションはプロジェクトを他のファイル、アーカイブファイル、へ移動させることです。
org-archive-subtree
)org-archive-location
で与えられる場所にアーカイブします。C-c C-x C-s
通常のアーカイブ場所は現在のファイルと同じディレクトリにある、現在のファイル名に_archiveを付加した名前のファイルです。これを変更するための情報や例は、org-archive-location
変数のドキュメント文字列をご覧ください。以下に示すような、バッファ内でこれを変更するためのオプションもあります83。
#+ARCHIVE: %s_done::
もしあるエントリー又は(サブ)ツリーに対して特別なアーカイブ場所を指定したいときには、エントリーに:ARCHIVE:
プロパティを場所を値として与えてください(see プロパティとカラム)。
もしサブツリーが移動した場合、エントリーが移動してきたファイル、アーカイブしたときのアウトラインパスなどのコンテクスト情報が記録されます。org-archive-save-context-info
変数を設定することで追加される情報の量を調整します。
もし異なるファイルへサブツリーを移動させずに、それをアジェンダビューで非表示にしたいなら、ARCHIVE tag
を使うことができます。
ARCHIVE タグ(see タグ)でマークされている見出しはアウトラインツリー内の場所に留まりますが、下記のような振る舞いをします。
org-cycle-open-archived-trees
オプションを設定します。また、show-all
などの通常のアウトラインコマンドはアーカイブしたサブツリーも開きます。
org-suparse-tree-open-archived-trees
オプションを設定しない限り現れません。
org-agenda-skip-archived-trees
を設定した場合は無視され、設定されない場合は常に表示されます。アジェンダでは、v
aを押すことで一時的にアーカイブを含むことができます。
org-export-with-archived-trees
変数を使って詳細な設定は行なってください。
org-columns-skip-archived-trees
変数がnil
に設定されない限りカラムビューから除外されます。
org-toggle-archive-tag
)
現在の見出しのARCHIVEタグをトグルする。もしタグが設定されているならば、見出しは
shadowed faceに変更され、以下のサブツリーは隠されます。a
org-force-cycle-archived
)org-archive-to-archive-sibling
)
現在のエントリーをアーカイブ兄弟に移動する。これは見出しが‘Archive’か‘ARCHIVE’タグの付いたエントリーの兄弟である。このエントリーはこの兄弟の子になる。そのため、継承したタグやアウトライン内のだいたいな位置など、従来の状況は保ち続けている。
Org-modeで作業した結果、TODOアイテム、タイムスタンプのついたアイテム、タグの付いた見出しなどが、1つのファイル、あるいはいくつものファイルにまたがって、撒き散らされることとなります。ある特定の日に重要な、実際に動いているアイテムやイベントの全体像を把握するためには、ひとつの管理された方法で、これらの情報を集めたり、並び替えたりしながら、表示することが必要です。
Org-modeでは、いろいろな基準によってアイテムを選択することが可能であり、独立したバッファにそれらのアイテムを表示させることができます。7つの異なるビューのタイプが用意されています。:
抽出された情報は特別なアジェンダバッファに表示されます。このバッファはリードオンリーですが、オリジナルのOrg-modeファイルにジャンプしたり、オリジナルのファイルを間接的に編集することができます。
2つの変数によって、アジェンダバッファをどのように表示するか、アジェンダが存在したときに、ウインドウの設定を元に戻すかどうかをコントロールします。;org-agenda-window-setup
とorg-agenda-restore-windows-after-quit
.
表示される情報は、通常すべてのアジェンダファイルから収集されます。アジェンダファイルはorg-agenda-files
84変数にリスト化されたファイルが対象となります。もしもこのリストの中にディレクトリ名が記載されていたら、
そのディレクトリの中にある.orgという拡張子がついた全てのファイルが、アジェンダファイルの対象となります。
したがって、たとえあなたが1つのOrg-modeファイルでしか作業をしていなくても、このファイルをそのリスト85に記載したことになるでしょう。org-agenda-files
をカスタマイズすることが可能で、しかも以下に述べるコマンドを通して簡単な方法で維持することができます。
org-agenda-file-to-front
)
アジェンダファイルのリストに編集中のファイルを追加する。そのファイルは、リストの先頭に追加される。もしも既にリストに存在していたら、先頭に移動する。前置引数をつけることで、リストの最後に追加/移動する。]
org-remove-file
)
編集中のファイルをアジェンダファイルのリストから削除する。
org-cycle-agenda-files
)
iswitchb
と似たようなインターフェースでOrg-modeのバッファの間を切り替えるコマンド。
Org-modeメニューには、現時点のファイルのリストが含まれており、その中のファイルに移動するのに役立ちます。
もしもこのリストに載っているファイルではなく、作業中のアジェンダファイルに焦点をあてたかったり、リストにあるファイルのまさにひとつのファイルに焦点をあてたかったり、はたまたあるファイルの中のあるサブツリーに焦点をあてたかったりしたいときは、いくつかの方法が用意されています。単一のアジェンダコマンドとして、コマンド選択画面上 (see アジェンダのコマンド選択)で<を1回ないし数回押すとよいのです。アジェンダの対象をある限定した期間に絞り込むために以下のコマンドが用意されています。:
org-agenda-set-restriction-lock
)
アジェンダの対象を現在カーソルが置かれているサブツリーに固定的に制限します。前置引数をつけたり、ファイルの最初の見出しよりも前にカーソルが置かれているときには、アジェンダの対象範囲はファイル全体になります。この制約はC-c
C-x
>を実行して取り除くか、<または>をアジェンダのコマンド選択画面上で入力するまでは維持します。もしもウインドウ上にアジェンダビューが表示されているならば、あたらしい制約が即座に効果を及ぼします。C-x >
org-agenda-remove-restriction-lock
)
C-c C-x <で作成された固定する制限を削除します。
speedbar.elを併用しているときは、Speedbarのフレームの中で以下のコマンドを使用することができます。
org-speedbar-set-agenda-restriction
)
Speedbarのフレームの中で、1つのOrg-modeファイルか、そのファイルのサブツリーの一つか、カーソルの置かれているアイテムに対応してアジェンダを恒久的に限定します。もしもアジェンダビューが表示されているウインドウがあるならば、限定箇所が変更されると即座に反映する。org-agenda-remove-restriction-lock
)
制限をふたたび解除する。
グローバルなキーと結びついている、コマンド選択画面を通してそのビューは作成されます。—例えば、C-c a (see インストール)のように。以下のように、コマンド選択画面にアクセスする方法としてC-c aを想定しており、キーボードでコマンドにアクセスするためのリストが表示されています。C-c aを入力した後、コマンドを実行するために、次に入力する文字を要求します。コマンド選択画面では以下に記載するデフォルトのコマンドが提供されています。
org-agenda-text-search-extra-files
の中でリスト化かれているファイルの中から正規表現を用いて検索します。これはEmacsのmulti-occur
というコマンドを使用します。前置引数をつけると、それぞれのマッチした行の状況の数をしていすることができます。デフォルトは1となっています。
あなたは、あたかもデフォルトのコマンドのように、コマンド選択画面でアクセスするカスタムコマンドを定義することもできます。複数のブロックを同時に含めた拡張されたアジェンダバッファを作成する可能性を含んでいます。例えば週のアジェンダ、グローバルなTODOリスト、そして多数の特定タグの検索など。See アジェンダのカラム表示.
このセクションではビルトインビューについて説明します。
1週間の/1日のアジェンダの目的は、その週あるいはその日のタスクをすべて表示して、紙のアジェンダのページのように、実行に移すことです。
org-agenda-list
)
Org-modeのファイルのリストの中からその週の予定を収集するものです。予定はそれぞれの日に表示されます。(C-u
2 1 C-c a
aのように)前置引数に数字をつけて88表示する日数を設定することができます。
表示されるデフォルトの日数は、org-agenda-span
(あるいは古くさくなってしまいましたがorg-agenda-ndays
)という変数で設定します。この変数は、アジェンダの中でデフォルトとして確認したい日数、あるいは、期間を示すday
、week
、month
やyear
といった期間を示す名前をつけて設定します。
アジェンダバッファからリモートで編集するとは、例えば、アジェンダバッファの中でデッドラインやアポイントメントの日付を変更することができるという意味です。アジェンダバッファの中で利用できるコマンドは、アジェンダのコマンドの中で一覧表にしています。
Emacsには、Edward M. Reingoldによって開発されたカレンダーと日記の機能があります。カレンダーでは、国や文化の異なる祝祭日を備えた3ヵ月分のカレンダーが表示されます。日記には記念日、月の満ち欠け、日の出日の入り、繰り返しの予定(隔週、隔月)などを記録しておくことができます。このような機能は、Org-modeに対して大変補完的な関係にあります。日記とOrg-modeの出力を結びつけることは大変有益です。
Emacsの日記からOrg-modeのアジェンダに項目を落とし込むために、あなたは次のように変数を設定するだけです。
(setq org-agenda-include-diary t)
その後、すべてが自動的に行われます。祝祭日や記念日などを含むすべての項目は、Org-modeで作成されるジェンダバッファに取り込むことができます。日記に記録されている項目を編集するために、アジェンダバッファ上で<SPC>、 <TAB>、及び <RET>を入力することで、日記のファイルにジャンプすることができます。その日に新しいエントリーを挿入するiというコマンドはアジェンダバッファ上で動作します。あたかも、日の出日の入りの時刻を表示したり、月の満ち欠けの状態を表示したり、他の暦に変換するための、S、M、および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
もしも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)’のエントリーを長々と書き連ねた場合よりもずっと早いと言えるでしょう。
Org-modeはEmacsの予定を通知する機能と連携しています。あなたのアジェンダファイルに含まれているすべてのアポイントを追加するために、org-agenda-to-appt
コマンドを使います。このコマンドはあなたの予定のリストにフィルターをかけ、特別なカテゴリーに属しているものや正規表現の検索に合致したものを追加します。詳細はドキュメント文字列を参照してください。
グローバルなTODOリストには、形式を整えられ、1つの場所に集められたすべての未完了のTODOアイテムが含まれています。
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つのキーを入力することでTODOエントリーの状態を変更できるということです。TODOリストの中で利用できるコマンドはアジェンダのコマンドの記述を参考にしてください。
通常グローバルなTODOリストには、TODOキーワードのついたすべて見出しが表示されます。このリストは大変長いものになる場合もあります。それをコンパクトにするには2つの方法があります。
org-agenda-todo-ignore-scheduled
、org-agenda-todo-ignore-deadlines
、org-agenda-todo-ignore-timestamp
および/またはorg-agenda-todo-ignore-with-date
という変数を設定し、グローバルなTODOリストから取り除くことができます。
org-agenda-todo-list-sublevels
変数を設定することで可能となります
アジェンダファイルの中の見出しにtags(see タグ)がついていたり、あるいは属性(see プロパティとカラム)がついていたときは、このメタデータに基づいて見出しを選択し、アジェンダバッファに収集することができます。この項で述べている検索構文はC-c / mを用いたツリーの抽出を行うときも適用できます。
org-tags-view
)
一組のタグのセットに合致したすべての見出しのリストを作成します。選択の基準の入力を指示するコマンドでタグのついた論理式による表現で記入します。例えば、‘+work+urgent-withboss’あるいは‘work|home’
というように(see タグ)。もしも特定の検索をよく行うならばそのためのカスタムコマンドを定義することができます(see アジェンダのコマンド選択)。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キーワードをタグの一致と一緒に指定することも可能です。タグの検索を参照してください。
タグのリストで利用できるコマンドはアジェンダのコマンドのところで説明しています。
検索文字列ではANDの意味で‘&’、ORの意味で‘|’という論理式を使うことができます。‘&’は‘|’よりも強く結びつけます。括弧(
)は現在準備されていません。検索のどの要素も、タグそのものか、正規表現でマッチしたタグか、あるいはPROPERTY OPERATOR
VALUE
のような属性値にアクセスして比較操作のできる値のいずれかになります。どの要素も‘-’を先頭につけてそれ以外のものを表現するか、‘+’を先頭につけてポジティブな選択を行う、というような糖衣構文(簡便な構文)で表現します。‘&’でANDを取り扱うことは‘+’、‘-’で表現できるもののオプションです。下にタグだけをつかったいくつかの例を挙げておきました。
タグの代わりに、大括弧でくくられた正規表現により指定をすることもできます。例えば、‘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-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2 \ +With={Sarah\|Denny}+SCHEDULED>="<2008-10-11>"
比較のタイプは比較の値がどのように書かれているかによります。
"<now>"
は(時刻も含めた)現在を示し、"<today>"
、"<tomorrow>"
はそれらの日の0:00つまり、時刻の指定がないことを表します。同様に、"<+5d>"
または"<-2m>"
というような文字列は、それぞれ日、週、月、年を示す、d
、w
、m
、y
という単位がついているものとして使用されます。
そのため、例に掲げた検索文字列の意味は、‘: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キーワードを検索することはできません。例えば、
タイムラインはひとつのOrg-modeファイルの中からtime-sorted view(時間順のビュー)ですべてのタイムスタンプのついたアイテムをまとめてて表示します。このコマンドの主な目的は、あるプロジェクトに含まれているイベント全体の概要をつかむためにあります。
org-timeline
)
すべてのタイムスタンプの付いたアイテムについて、Org-modeファイルの中で時間順のビューを提供します。C-uという前置引数をつけて呼び出したときは、現在の日付の時点で、すべての未完了のTODOエントリー(予約されているものも、そうでないものも)を一覧にします。
タイムラインのバッファで利用できるコマンドは、アジェンダのコマンドにリスト化されています。
アジェンダのビューではOrg-modeのエントリーに対する一般的なテキスト検索機能を持っています。これはノートを探すのに特に役に立ちます。
org-search-view
)
このコマンドは特別な検索のためのもので、論理式を使って、文字列または特定の単語に合致するエントリーを選択します。
computer
とwifi
というキーワードを含んでおり、ethernet
というキーワードは含まれておらず、8\.11[bg]
という正規表現を含んでいない、すなわち8.11bおよび
8.11gともに含まれていないという意味ですが、エントリーを検索します。最初の‘+’は単語検索を開始するために必要ですが、ほかの‘+’はオプションです。詳しく知りたい場合は、org-search-view
というコマンドのドキュメント文字列を参照してください。
アジェンダファイルに加えて、このコマンドはorg-agenda-text-search-extra-files
の中で一覧になっているファイルもまた検索するということに注意してください。
もしもあなたが、以下に述べるようなDavid Allen氏のGTDのようなシステムであなたの仕事を管理しているならば、あなたが抱えている「義務」のひとつは、すべてのプロジェクトが進んでいるかを明確にするために、レビューを定期的に行うことです。詳細が未決定のプロジェクトは、次の行動が何も定義がされていないため、Org-modeが提示するTODOリストに、全く何も表示されることがないのです。レビューをする際に、そういったプロジェクトを明確にし、それらのプロジェクトための次の行動を定義することが必要です。
org-agenda-list-stuck-projects
)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\\>"))
もしもあるプロジェクトが詳細が未決定のプロジェクトではないと定義されたならば、そのエントリーのサブツリーは依然として詳細が未決定のプロジェクトとして検索されるということに注意してください。
アジェンダビューにアイテムが表示される前に、Org-modeではそのアイテムを表示し並び替える準備を行っています。それぞれのアイテムは1行を占めます。その行にはその項目のcategory
(see カテゴリ)を含んだprefixとそれ以外の重要な情報を含んでいます。あなたはorg-agenda-tags-column
を使って表示されるコラムタグをカスタマイズすることができます。org-agenda-prefix-format
のオプションを使用して前置引数をカスタマイズすることができます。この前置引数は、そのアイテムに関連するアウトラインの見出しの最新のバージョンに従います。
カテゴリーとは、それぞれのアジェンダアイテムに割り当てられた幅の広いラベルです。デフォルトでは、カテゴリーはファイルの名前から単純に作成されます。しかし、バッファ上で特別な行を足すことでそれを指定することができます。91
#+CATEGORY: Thesis
もしもあなたが、1つのエントリーもしくは1つの(サブ)ツリーに特別なCATEGORYを持たせたいと望むのならば、そのエントリーに、値として適用したいと思っている特別なカテゴリーを:CATEGORY:
という属性に設定しなさい。
アジェンダバッファの表示は、そのカテゴリーが10文字以上長くしない方が見栄えが良いです。
あなたはorg-agenda-category-icon-alist
変数をカスタマイズすることで、カテゴリーにアイコンを設定することができます。
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
で設定をすることができます。
ビューに書き出される前に、各アイテムは並び替えが行われます。この並び替えはビューのタイプによって決まります。
org-agenda-files
によって決められた順番に、カテゴリーごとにグループ分けされます。それぞれのカテゴリーの中で、各アイテムは優先順位(see プロパティ)に従って並び替えられます。優先順位は基本的な優先順位で構成されます(優先順位‘A’ならば2000、‘B’ならば1000、‘C’ならば0として)。さらに、予定あるいはデッドラインを過ぎているアイテムのウエイトが追加されます。
並び替えは、org-agenda-sorting-strategy
変数でカスタマイズすることができます。そして、並び替えはそのエントリーの工数の見積りに基づく評価も含まれます。
アジェンダバッファでのエントリーは、その項目が作成されたOrg-modeファイルと日記ファイルの間でリンクされます。アジェンダバッファでは編集することはできませんが、コマンドを使って、そのエントリーがある場所を表示したり、ジャンプして、アジェンダバッファから「遠隔的に」Org-modeファイルを編集することができます。この方法で、すべての情報は1度書き込めばよく、あなたがアジェンダとノートのファイルが別の情報になるというリスクを避けることができます。
いくつかのコマンドはアジェンダの行上でマウスをクリックすることで実行されます。それ以外のコマンドは、必要とされる行の中にカーソルが置かれている必要があります。
org-agenda-next-line
)org-agenda-previous-line
)org-agenda-show-and-scroll-up
)org-agenda-recenter
)org-agenda-goto
)org-agenda-switch-to
)org-agenda-follow-mode
)org-agenda-start-with-follow-mode
変数で設定することができる。C-x
b
org-agenda-tree-to-indirect-buffer
)
間接的なバッファの中で可憐とアイテムのサブツリー全体を表示する。数値付きの前置引数Nをつけると、第N階層まで階層を上がり、そのツリーを取得する。もしもNがマイナスならば、多くの階層まで上がる。C-uという前置引数を付けた場合は、既に使われた間接的バッファは消去されない。
org-agenda-open-link
)
エントリーの中にあるリンクをフォローする。この機能は、参照されているOrg-modeのノードに属しているテキストの中に含まれているいくつかのリンクの中から選択するという機能を提供する。もしもリンクが1つしかない場合は、選択画面を表示せずに、そこにリンクを貼る。
org-aganda-day-view
)org-aganda-day-view
)
org-agenda-month-view
)org-agenda-month-year
)
org-agenda-reset-view
)org-agenda-span
での設定をリセットすることができます。org-agenda-later
)org-agenda-goto-today
)org-agenda-goto-date
)org-agenda-clock-goto
)org-agenda-toggle-diary
)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と等価です。[
org-agenda-manipulate-query-add
)
現在のビューに、不活性のタイムスタンプを含めます。週/日のアジェンダとタイムラインビューのみです。a
org-agenda-archives-mode
)
'files
org-agenda-archives-mode
ARCHIVED
と印されたツリーもまたアジェンダを作成するときにスキャンされます。大文字のAを使用したときは、全てのアーカイブファイルを含みます。archives
modeから出るためには、再度v aを押してください。R
org-agenda-clockreport-mode
)
Clockreportモードをトグルします。Clockreportモードでは、日/週のアジェンダは、時間軸のための時刻のついた表を表示し、カレントのアジェンダビューでカバーされる範囲をファイルします。新しいアジェンダバッファの中で、このモードの初期設定は、org-agenda-start-with-clockreport-mode
変数で設定することができます。このモードをトグル(すなわち
C-u
R)している時に、前置引数を使用することで、アジェンダフィルター92によって隠されているエントリーからの情報を表示しないでしょう。E
org-agenda-entry-text-mode
)
entry text modeをトグルします。entry text
modeでは、アジェンダ行によって参照されているOrg-modeのアウトラインのノードから、多数の行が、その行の下に表示されるでしょう。最大の行数は、org-agenda-entry-text-maxlines
変数で指定します。数値付きの前置引数を付けて、このコマンドを呼び出すと、前置引数の値の数によって、即座に修正されます。
org-agenda-toggle-time-grid
)org-agenda-use-time-grid
とorg-agenda-time-grid
変数を参照してください。org-agenda-rodo
)org-agenda-rodo
)org-agenda-columns
)
アジェンダバッファの中でカラムビュー(see カラムビュー)を作成します。カラムビューのフォーマットは、その時点のエントリーから作成され、あるいは(もしも、その時点でエントリーが存在しないなら)、アジェンダビューの最初のエントリーから作成されます。そのエントリーのためのフォーマットが何であれ、(プロパティから、#+COLUMNS
という行から、あるいはorg-columns-default-format
変数のデフォルトから作成された)オリジナルのバッファに存在しているエントリーのフォーマットがアジェンダで使用されます。
org-agenda-remove-restriction-lock
)
もしもファイルまたはサブツリーをその時点で制限しているならば、アジェンダをロックする制限を取り除きます。
(see アジェンダファイル).
org-agenda-filter-by-tag
)タグ選択の文字を入力しましょう。<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-undo
)org-agenda-todo
)org-agenda-todo-nextset
)org-agenda-todo-previousset
)org-agenda-kill
)org-agenda-confirm-kill
変数を参照のこと。C-w
org-agenda-refile
)
その時点でそのエントリーを差し替える。C-a
org-agenda-archive-default-with-confirmation
)
org-archive-default-command
に設定されたデフォルトのアーカイブコマンドを使用して、その時点でエントリーに対応したサブツリーをアーカイブする。a
キーを使用したときは、承認が必要である。C-x a
org-agenda-toggle-archive-tag
)
カレントの見出しのためのARCHIVEタグをトグルする。C-x
A
org-agenda-archive-to-archive-sibling
)
カレントエントリーに対応したサブツリーを、アーカイブファイルに移動する。C-x
C-s
org-agenda-archive
)
カレントの見出しに対応したサブツリーをアーカイブする。これは、設定されたアーカイブの場所に、多くの場合それは異なるファイルであるが、エントリーを移動することを意味している。org-agenda-show-tags
)org-agenda-show-inherited-tags
機能を停止しているにもかかわらず、依然として、たびたび見出しのすべてのタグを確認したいというときに役に立つ。org-agenda-set-tags
)org-agenda-show-priority
)org-agenda-priority-up
)org-agenda-priority-down
)org-agenda-add-note
)org-log-into-drawer
によって、これは引き出しの中に入る。C-a
org-attach
)
すべてのコマンドの選択画面は、付属するものに関連づけられる。C-s
org-agenda-schedule
)
このアイテムを予約する。前置引数をつけると、予約のタイムスタンプが削除される。C-d
org-agenda-deadline
)
このアイテムにデッドラインを設定する。前置引数をつけるとデッドラインが削除される。org-agenda-action
) m その地点でアクションのためにエントリーにマークする。複数のエントリーに対しても可能である。
Org-modeでは次を伴うC-c C-x C-k.
d その時点の日付でマークされたエントリーのデッドラインを設定する。
s その時点の日付でマークされたエントリーを予約する。
r デフォルトの日付としてカーソルの日付とともにorg-capture
を呼び出す。
org-agenda-do-date-later
)org-agenda-do-date-earlier
)org-agenda-date-prompt
)org-agenda-clock-in
)org-agenda-clock-out
)org-agenda-clock-cancel
)org-agenda-clock-goto
)org-agenda-bulk-mark
)org-agenda-bulk-remove-all-marks
)org-agenda-bulk-remove-all-marks
)org-agenda-bulk-action
)r 1つのリフィル上のターゲットに入力しすべてのエントリーを移動する。そのエントリーは アジェンダ上には表示されなくなる。再表示(g)によって再度表示される。 $ 選択されているエントリーをすべてアーカイブする。 A エントリーをアーカイブし、それぞれを所定のアーカイブ先に移動する。 t TODOの状態を変更する。これはTODOキーワード1文字を入力し、そして 選択されたエントリーすべての状態を変更する。それはブロックしているのを無視し ログのノートを抑え込んで(タイムスタンプは別です)。 + 選択されたエントリーのすべてにタグを付加する。 - 選択されたエントリーのすべてから、タグのひとつを削除する。 s すべてのアイテムに新しい日付で予約する。すでに予約がついていれば、日数分だけ 日付を更新する。入力欄でプラスを2つつけて何かの数字を最初に打つことで。 例えば、‘++8d’とか‘++2w’のように。 S N日を指定して、それぞれをリスケジュールする。Nは入力欄で指定する。前置引数 (C-u B S)をつけることで、平日のみに指定できる。 d 指定した日をデッドラインとして設定する。
org-agenda-goto-calendar
)org-calendar-goto-agenda
)org-agenda-diary-entry
)もしもOrg-modeファイルにorg-agenda-diary-file
を指定したならば、Org-modeではそのファイルの中に(Org-modeの構文を使って)日記の代わりに、エントリーを作成することができます。ほとんどのエントリーは、日付を元にしたアウトラインのツリーの中に記述されており、あとで過去の月/年の中から予定をアーカイブするのを簡単にします。そのツリーは、DATE_TREE
属性か、最上位のエントリーとして、年という属性を持ったエントリーのもとに構築されています。Emacsでエントリーのテキストを入力するようプロンプトが表示されるでしょう。もしもあなたがそれを指示するならば、さらなる連携なく、org-agenda-diary-file
にそのエントリーを作成することになるでしょう。テキストを入力することなく、その入力欄で直接<RET>を入力したら、そのターゲットとなるファイルがその場でのエントリーを終了させ、別のウインドウが表示されるでしょう。k
rコマンドを参照してください。
org-agenda-phases-of-moon
)org-agenda-sunrise-sunset
)org-agenda-convert-date
)org-agenda-holidays
)org-write-agenda
)org-agenda-exporter-settings
変数を使用します。
org-agenda-quit
)org-agenda-exit
)カスタムアジェンダコマンドは2つの目的を提供する。ひとつはTODOとタグの検索を使用して、保存と素早く頻繁にアクセスするため。もうひとつは、特別に合成したアジェンダバッファを作成するため。カスタムなアジェンダコマンドはデフォルトのコマンドと同様に、コマンド選択画面ディスパッチャー(see アジェンダのコマンド選択)を通して利用できる。
カスタム検索の最初のアプリケーションは、よく使われる検索式のためのキーボードショートカットを定義することです。それはアジェンダバッファの作成、またはツリーの抽出(後者は言うまでもなくカレントバッファのみをカバーする)のどちらに対してでも。
カスタムコマンドは、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番目のパラメーターは検索の種類を示し、マッチさせるために使われる文字列や正規表現がそれに続きます。上の例ではそれゆえ以下のように定義します。
もう一つの可能性とは、アジェンダビューの構築です。そのビューは、様々なコマンドの結果で構成されており、それぞれのコマンドはアジェンダバッファの中の1つのブロックを作成します。利用できるコマンドは(C-c
a aを実行して作成された)一日または週間アジェンダのためのagenda
、(C-c a
tを実行して作成された)グローバルなtodoリストのためのalltodo
、そして上で議論してきたtodo
、tags
、tags-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というコマンドで、同様に、オフィスの作業についてのビューを得ることができます。
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つの文字ならば、あなた自身でその変数の値に「”(ダブルクォート)」で囲む必要があるということです。
もしもあなたが自分のコンピュータから離れているときは、いくつかのアジェンダのバージョンを印刷して持ち歩くことは大変役に立ちます。Org-modeはカスタムアジェンダビューをプレーンなテキスト、HTML96、Postscript、PDF97、iCalenderファイルとしてエキスポートすることができます。もしも、ときどきこのようなことを実行するのならばコマンドを使用しましょう。
org-write-agenda
)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ステップですべての指定されたファイルを出力する特別なコマンドが用意されています。
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日以内に限定したアジェンダビューを作成します。
あなたは、他のプログラムで将来の進行過程を認める方法で、アジェンダの情報を絞り込むことができます。詳細はアジェンダ情報の抽出,のノートの情報を参照してください。
カラムビュー(see カラムビュー)は、Org-modeファイルの階層構造の中に組み込まれている属性を見たり編集したりするために通常は使われます。エントリーがある評価基準で収集されているアジェンダから、カラムビューを使用することは大変便利です。
org-agenda-columns
)この属性がどのようなものか理解するために、アジェンダのエントリーはもはや適切なアウトラインの環境ではなくなることを理解することが重要です。これによって以下のようなことが生じます。
COLUMNS
のフォーマットを使用するか、決定する必要があります。アジェンダの中のエントリーは、異なるファイルから集められるということと、ファイルが異なるとCOLUMNS
のフォーマットも異なるということから、このことは些細な問題であるとはいえないのです。Org-modeは最初に、org-overriding-columns-format
変数がカレントで設定されているかどうか、またそこからフォーマットを取り出すことができるかどうかチェックします。一方、アジェンダの最初のアイテムに関連したフォーマットを使用するか、もしもそのアイテムが特別なフォーマット(属性もしくはファイルの中で定義された)を持たないならば、org-columns-default-format
を使用します。
CLOCKSUM
の属性が真であると設定されているということです。Org-modeはアジェンダの中で表示された値を合計するでしょう。一日/週間アジェンダの中で、合計は1日をカバーしています。他のビューでは、ブロック全体をカバーするのです。アジェンダでは同じエントリーを2度表示したり(例えばスケジュールと期限というように)、同じ階層(例えば親と子)から2つのエントリーを表示したりするかもしれない、ということを理解することは重要なことです。これらの場合、アジェンダの中での要約は、いくつかの値が二重にカウントされるという間違った結果を導く可能性があります。
CLOCKSUM
を表示するときは、このアイテムのためにいつでも時間計測全体に対応します。そのため1日/週間アジェンダにおいて、カラムビューでリスト化された時間合計は、カレントのビューの外側の時間から発生することになるかもしれません。この機能によって、あるタスクについて、計画された総工数を1つのカラムにリストにして、その値を比較することができるので、優位性を持ちます。この機能はアジェンダのカラムビューにおける重要なアプリケーションのひとつです。もしもあなたが表示されている期間の中の作業時間についての情報を得たいならば、clock
table mode(Rをアジェンダの中で入力する)を使用してください。
Org-modeの文書をエクスポートする時,エクスポート機能は文書の構造をできるだけ正確に反映しようとします.HTMLやLaTeX,DocBook,その他のリッチフォーマット等のエクスポートの対象について,Org-modeは文書をリッチエクスポートに変換するルールを持ちます.このセクションはOrg-modeのバッファで使われるマークアップのルールについて説明します.
#+TITLE: これは文書のタイトルです.
もしこの行が存在しなければ,タイトルはバッファ中の最初の空でない,コメントでない行を用います.もしまだ何も存在していない,またはあなたが最初の見出しより前のテキストをエクスポートをしないよう設定していたら,タイトルは拡張子無しのファイル名となります.
もしあなたがリージョンでマークしたサブツリーのみをエクスポートしているなら,サブツリーの見出しは文書のタイトルとなるでしょう.もしサブツリーがEXPORT_TITLE
プロパティを持っているなら,そのプロパティの値が優先して用いられるでしょう.
ドキュメントの構造で説明されているような文書のアウトライン構造は エクスポートされた文書のセクションの定義の基準を形成しています.しかしながら,アウトライン構造はまた(例えば)タスクのリストとしても使われているので,最初の3アウトラインレベルのみ見出しとして使われます.
#+OPTIONS: H:4
目次は通常ファイルの最初の見出しの前に直接挿入されます.もしあなたが異なる場所に目次を挿入したいのなら,その場所に[TABLE-OF-CONTENTS]
文字列を書いてください.目次の深さはデフォルトでは見出しのレベルの数と同じですが,org-export-with-toc
変数を設定するか,ファイルに以下のように書くことによって,あなたはこれより小さな値に変更することも,目次を完全に表示させないようにすることも可能です.
#+OPTIONS: toc:2 (目次に表示するレベルを2までとする) #+OPTIONS: toc:nil (目次を表示しない)
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: このテキストは目次と最初の見出しの間に置かれます
エントリー中の階層構造で説明されているプレーンリストは,バックエンドのリストに変換されます.多くのバックケンドがサポートしているのは記号付きリスト,番号付きリスト,見出し付きリストです.
段落は最低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
脚注は脚注で説明されたように定義されていて,全てのバックエンドにエクスポートされます.Org-modeは同じノートに対しての複数の参照と異なるバックエンドをサポートします.
あなたは*bold*と/italic/,_underlined_,=code=
,~verbatim~
,そして必要なら‘+strile-through+’を単語に適用することができます.codeとverbatim文字列の中のテキストはOrg-modeの明確な構文ではありません;
それはverbatimにエクスポートされます.
少なくとも5文字のダッシュ文字のみで行成される線は水平線(HTMLでは‘<hr/>’,LaTeXでは\hrule
)にエクスポートされます.
行頭の文字が‘#’から始まる行はコメントとして扱われ,エクスポートされません.もしあなたがコメント行をインデントしたいのであれば,‘#+’から行を開始してください.‘COMMENT’ワードを持つサブツリーは,サブツリー全体がエクスポートされません.最後に,‘#+BEGIN_COMMENT’から‘END_COMMENT’で囲まれた範囲はエクスポートされません.
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 画像リンクの議論.
あなたはマークアップに依存しないリテラルの例を含めることができます.そのような例に等幅のタイプセットがあり,それはソースコードやそれに似た例向きです.
#+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
example
とsrc
スニペットでは,あなたは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エクスポートでのテキストエリア.とすることができます
artist-mode
103を使うことで編集されます.空行でこのコマンドを使うことで,新しい固定幅のリージョンを作成します.
org-store-link
の呼び出しはラベルを指示します.現在のバッファがユニークであることを確認し,現在の行の最後に‘(ref:label)’のように適切にフォーマットされたものが挿入されます.ラベルは‘(label)’のようなリンクを記憶し,C-c
C-l検索する.
エクスポート中,あなたは別のファイルの内容をインクルードすることができます.例えば,.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
あなたは公開した文書のインデックスに用いるエントリーを規定することができます.これは#+INDEX
から始まる行により設定します.感嘆符を含むエントリーはサブアイテムを作るでしょう.さらなる情報を見るにはインデックスの生成を参照してください.
* Curriculum Vitae #+INDEX: CV #+INDEX: Application!CV
あなたは次のようにしてテキストスニペットを定義することができます.
#+MACRO: name replacement text $1, $2 are arguments
これは
{{{name(arg1,arg2)}}}
と書くことでドキュメントのどこからも(コードの例からも)参照されます.マクロの定義に加えて,{{{title}}}
,{{{author}}}
などは#+TITLE:
や#+AUTHOR:
や他の似たような行によりセットされる情報を参照します.また,{{{date(
FORMAT)}}}
と{{{modification-time(
FORMAT)}}}
は現在の日付とファイルがエクスポートされて変更された時刻をそれぞれ参照します.FORMATはformat-time-string
で認識した文字列をフォーマットします.
マクロ展開はエクスポート中に行われ,一部の人々は複雑なHTMLコードの構築に用いる.
プレーンなASCIIはほとんどの場合ノートをとるのに十分です.例外は数学の記号や時々出てくる数式を必要とする科学に関するノートのようなものです.LaTeX104は科学に関する文書の組版に広く使われています.多くのacademicsはLaTeXのソースコードの読み書きに使われていて,すぐに多くのエクスポートバックエンドに対応できるため,Org-modeはLaTeXコードのファイルへの組込みをサポートしています.
あなたはLaTeXマクロをギリシャ文字を表す‘\alpha’や矢印を表す‘\to’のような特殊記号の挿入に使うことができます.これらのマクロは補完が可能で,‘\’まで入力し,その後に何文字か入力してM-<TAB>を押すことで補完が可能です.LaTeXのコードとは違い,Org-modeは数学の区切り文字を囲まないようなマクロも使うことができます.以下に例を挙げます:
Angles are written as Geek letters \alpha, \beta and \gamma.
エクスポート時,これらのシンボルはエクスポート先のネイティブフォーマットに変換されます.HTMLでは\alpha
のような文字列はα
にエクスポートされ,LaTeXでは$\alpha$
となります.同様に,\nbsp
はHTMLでは
に,LaTeXでは~
となります.もしあなたが記号を単語の中に含めたいのであれば,次のようにします:
‘\Aacute{}stor’.
非常に多くのエンティティが提供されていて,HTMLとLaTeXからその名前を引き継いでいます;完全なリストはorg-entities
変数を見てください.‘\-’はシャイなハイフンとして扱われていて,‘--’や‘---’,‘...’は異なる長さのハイフンかドットの集合を作成するための全て特殊コマンドに変換されます.
もしあなたがUTF-8文字でエンティティを表示したいのなら,以下のコマンド105:
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}’とすることで解釈されます.
シンボルと上付き,下付き,完全な式を越えることが必要です.Org-modeはLaTeXの数式を含むことができ,各エクスポート先への変換もサポートしています.LaTeXにエクスポートするとき,コードは明らかに残っています.HTMLへエクスポートするとき,Org-modeは数式106の処理と描画のためにMathJax library (see HTMLエクスポートでの数式フォーマット)を呼び出します.最後に,数式表現はブラウザかDocBook文書で描画可能な画像107へと処理されます.
LaTeXのコード片は,特別なマークは全く必要ありません.以下のコード片はLaTeXのソースコードとして知られています:
\begin
文は空白のみがある行に表示されることです.
例:
\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
もしあなたがdvipngをインストールしているのであれば,LaTeXのコード片は出力された組版において画像として処理されます:
プレビューの外観を変更するために,あなたはorg-format-latex-optins
変数をカスタマイズすることができます.とりわけ,:scale
(そしてHTMLへのエクスポートでは:html-scale
)プロパティは画像のプレビューサイズの調整に使われます.
CDLaTeXモードは環境や数学テンプレートの挿入をスピードアップするためにAUCTeXに似たメジャーモードであるLaTeXモードと併用して通常使われるマイナーモードです.Org-modeでは,あなたはCDLaTeXモードのいくつかの機能を使用できます.あなたはhttp://www.astro.uva.nl/~dominik/Tools/cdlatexからcdlatex.elとtexmathp.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モードのドキュメントを参照してください)::
fr
を\frac{}{}
に展開しカーソルを最初の括弧に移動します.もう一度<TAB>を押すと2つ目の括弧にカーソルが移動します.コード片の外だと,<TAB>は行の先頭にある環境の略語を展開します.例えば,もしあなたが行頭に‘equ’と書いていて<TAB>を押すと,この略語はequation
環境に展開されます.全ての略語を見るには,M-x
cdlatex-command-helpをタイプしてください.
cdlatex-simplify-sub-super-script
変数に依存します).
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ではデフォルト)、は選択したリージョンをエクスポートをすることができます。
エクスポートしたいドキュメントのある部分を選択、または除外する時にタグを使うことができます。 その挙動は、
org-export-select-tags
と org-export-exclude-tags
の二つの変数により決まります。
org-modeはまず始めに select タグがバッファにないかチェックします。 あった場合は, タグがない全てのツリーは除外されます。もし選択したツリーがサブツリーだった場合、それより上の階層はエクスポートされるものとして選択されますが, それより下の階層は選択されません。
もし、選択されたタグがなかった場合, バッファにある全ての内容がエクスポートされるものとして選択されるでしょう。
最後に, exclude タグでマークされていない全てのサブツリーはエクスポートバッファから除かれるでしょう。
エクスポートする際にはバッファにある特別な行が読みこまれます。 その行には追加的な情報が含まれており、ファイルの中でどこにでも書くことができます。
C-c C-e t と入力することで、バッファにそのような行をセットで挿入することができます。それぞれの行で ‘#+’
と入力した後に M-<TAB> による補完を行ない、 (see 補完)
キーワードが正しいか、確認してみると良いでしょう。エクスポートと関連のない、バッファ内の設定の概要については バッファ内での変数制御
を参照してください。特に、 #+SETUPFILE
を使うことによって含めることができる別のファイルの中でよく使われる(エクスポートの)オプションを指定できることに注意してください
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 の両方のエクスポートに影響します。 TeX
と LaTeX
のオプションを除き LaTeX のエクスポートをするのに、それぞれ t
、または nil
となります。
org-export-html-pre/postamble
を t
とするとHTMLにエクスポートする時に
author
、 email
及び creator
の値は上書きされるでしょう。 代わりに
org-export-html-pre/postamble-format
が用いられます。
このようなオプションの初期値は変数のセットで与えられます。 そのような変数は、OPTIONSのキーと公開するキーにも対応しています。
(see プロジェクトのリスト), org-export-plist-vars
の定数を見てください。
エクスポートのコマンドを呼びだす前に、 C-c @ で選択した単一のサブツリーをエクスポートする時、そのサブツリーは、
EXPORT_FILE_NAME
、 EXPORT_TITLE
、 EXPORT_TEXT
、
EXPORT_AUTHOR
、 EXPORT_DATE
、 そして EXPORT_OPTIONS
プロパティでエクスポートの設定を無視することができます。
全てのエクスポートコマンドはエクスポートコマンド選択画面から選ぶことができます。 コマンド選択画面では、コマンドを特定するための追加的なキーの入力を促されます。通常、ファイルの全ての内容がエクスポートされますが、もしアクティブなリージョンに一つのアウトラインツリーが含まれていた場合, まず、見出しがドキュメントのタイトルとして扱われ、サブツリーがエクスポートされます。
org-export
)org-export-visible
)
C-c C-e のように動作しますが、 今見えている文章だけがエクスポートされます。
(i.e. アウトライン表示により、隠されていない文章). org-export
)org-export-run-in-background
の設定と逆の挙動となります。 i.e.
動いていないバックグラウンドプロセスを呼びだしたり, 現在のEmacsのプロセスで強制的に実行したりします。
ASCII形式へのエクスポートは、org-modeのファイルをASCIIのみが含まれる、シンプルで読みやすい形に書き出します。Latin-1及びUTF-8でのエクスポートでは特殊な文字やシンボルをそれらのエンコードで出力します。
org-export-as-ascii
)EXPORT_FILE_NAME
プロパティを継承していた場合、 エクスポートする際にはその名前が使われるでしょう。
org-export-as-ascii-to-buffer
)org-export-as-latin1
)org-export-as-latin1-to-buffer
)
上に示したコマンドのような動作をしますが,
Latin-1でエンコーディングされたものが出力されます。 org-export-as-utf8
)org-export-as-utf8-to-buffer
)エクスポートされたものでは、 最初の3つのアウトラインの階層が一般的な文書の構造と見なされて、見出しとなります。 それ以外の階層はアイテムのリストとしてエクスポートされます。 この違いを異なる階層に変えたい場合は、 前置引数で、その階層を指定します。 例えば、
C-1 C-c C-e a
は 最初の階層のみを見出しとし、それ以外はアイテムとなります。見出しがアイテムに変更された時、 見出し後の文章のインデントは、アイテムの下にうまく調和するように変更されます。 この変更は、最初の本文が全体のインデントを示しているという仮定のもとで実行されます。これよりも大きなインデントは、最初の文章との相対的なレイアウトを維持するように調整されます。最初の行より少ないインデントであれば, 左寄せします。
次の見出しの前にあるリンクは脚注のような形でエクスポートされます。その脚注は、次の見出しの前に項目名とリンクがエクスポートされます。詳しい内容と他のオプションについては、変数
org-export-ascii-links-to-notes
を見てください。
org-modeには多くのHTMLのフォーマットに対応したHTML (XHTML 1.0 準拠)エクスポート機能があります。それは、John Gruberが開発した markdown 言語に似ていますが、org-modeではさらにテーブルもサポートしています。
org-export-as-html
)EXPORT_FILE_NAME
プロパティを継承していた場合、 エクスポートする際にはその名前が使われるでしょう。C-e b
org-export-as-html-and-open
)
HTMLファイルをエクスポートし、そのファイルをブラウザで開きます。
org-export-as-html-to-buffer
)org-export-region-as-html
)エクスポートされたものでは、 最初の3つのアウトラインの階層が一般的な文書の構造と見なされて、見出しとなります。 それ以外の階層はアイテムのリストとしてエクスポートされます。 この違いを異なる階層に変えたい場合は、 前置引数で、その階層を指定します。 例えば、
C-2 C-c C-e b
この場合2番目のレベルまでを見出しとして取り扱い、それ以外は項目として取り扱います。
HTMLにエクスポートする際、プレーンな‘<’ and ‘>’は常に ‘<’と‘>’に変換されます。もし単純なHTMLタグをそのまま含めたい時は, ‘@<b>bold text@</b>’のようにma‘@’でマークします。これは単純なHTMLタグでしか動作しませんので注意してください。 エクスポートするファイルにさらに広範囲なHTMLをそのままコピーするには次のようなブロックが使えます。
#+HTML: エクスポートするHTMLコード
マーカー間の全ての行は文字どおり出力されます。
内部リンク(see 内部リンク) エクスポートされHTMLでも同様に動作します。これには、ラジオターゲット(see ラジオターゲット)により生成された自動リンクも含まれます。もしターゲットとなるファイルが公開されるOrgファイルを示す同じ相対パス上にあっても、リンクは外部リンクとして動作するでしょう。他の.orgファイルへのリンクは、HTMLにエクスポートされたものにも同じ相対パスでリンクされたファイルがある、という前提で、リンクに変換されます。 ‘id:’リンクはファイル間で特定のエントリーにジャンプするのに使われます。リンクするファイル、公開ディレクトリでの公開に関する情報については、ファイルリンク付きの公開参照してください。
リンクの属性を記述したい時は、特別な#+ATTR_HTML
行を用いることができます。
この行は、<a>
タグや<img>
タグを追加する属性を定義するために使われます。以下の例では、リンクにtitle
とstyle
の属性を設定しています。
#+ATTR_HTML: title="The Org-mode homepage" style="color:red;" [[http://orgmode.org]]
org-modeの表は、org-export-html-table-tag
で定義されているテーブルのタグを使ってHTMLにエクスポートされます。
デフォルトの設定では、セルの罫線とフレームがない状態でテーブルが出力されます。 個々のテーブルでその設定を変えたい場合は,
次のような行をテーブルの前に記述してください。
#+CAPTION: これはセルの周囲に線が引かれた表です。 #+ATTR_HTML: border="2" rules="all" frame="all"
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
のアドレスも使うことができます。
LaTeXの数学用スニペット(see LaTeXのコード片)は二つの異なる方法でHTMLに表示される。デフォルトではorg-modeをインストールすると、すぐにMathJax systemが使えるようになっています。
http://orgmode.org
はMathJaxが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
コードサンプルを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
エクスポートするファイルには、スタイルに関する情報を含めることができます。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を使うことができます。
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
を変更してください。
org-modeには、Bastien Guerryによって書かれたLaTeXのエクスポート機能があります。追加的な処理と合わせて、120,このバックエンドはPDFの出力にも使われています。LaTeXの出力は、リンクと相互参照の実装にhyperrefを使っているので、出力されたPDFファイルは完全にリンクされているでしょう。セクションの階層に合わせて正しく出力されるためには、orgファイルは適切に構造化されていないといけないので注意してください。
org-export-as-latex
)EXPORT_FILE_NAME
プロパティを継承、または持っている場合、エクスポートされる際には、その名前が使われるでしょう。C-e L
org-export-as-latex-to-buffer
)
一時バッファに出力します。ファイルを作りません。
org-export-as-pdf
)
LaTeXに出力し、PDFにも変換します。d
org-export-as-pdf-and-open
)
LaTeXに出力し、PDFにも変換します。その際出力されたPDFファイルを開きます。
エクスポートされたものでは、 最初の3つのアウトラインの階層が一般的な文書の構造と見なされて、見出しとなります。
それ以外の階層は概要のリストとしてエクスポートされます。エクスポート機能では、org-latex-low-levels
を変更することで、この設定を無視、または変更することができます。
この違いを異なる階層で変えたい場合は、 前置引数で、その階層を指定します。 例えば、
C-2 C-c C-e l
この場合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
のドキュメント文字列を参照してください。
LaTeXの組み込みで記述された埋め込まれたLaTeXは、LaTeXに正しく挿入されます。図の相互参照を生成するために、‘\ref{LABEL}’のようなシンプルなマクロが含まれます。さらに、次のような行を追加することで、LaTeXエクスポートの際に表示だけしてほしい特別なコードを追加することができます。
#+LaTeX: エクスポートする際に文字のまま、出力されるLaTeX code
#+BEGIN_LaTeX マーカの間にある全ての行は文字がそのまま出力されます。 #+END_LaTeX
LaTeXで表を出力する際に、番号と表題を指定することができます
(see 画像とテーブル)、ATTR_LaTeX
行を使うことで、表に関するlongtable
環境を呼び出すこともできます。複数のページにまたがる表や、デフォルトの表の環境をtable
からtable*
にするため、またはデフォルトの内部tabular環境をtabularx
やtabulary
にしたい時にもATTR_LaTeX
行は使われます。つまり、文字の配置や
(tabularx
やtabulary
を使って)幅を次のようにして設定できます。:
#+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 | ..... | ..... | | ..... | ..... |
‘[[file:img.jpg]]’ や ‘[[./img.jpg]]’ のように説明文にリンクされていない画像は、
LaTeX の処理によりPDFの中に挿入されます。 Org-modeは、画像を挿入するのに \includegraphics
マクロを使います。もし、画像とテーブルで説明されているように図の表題や番号を特定したいのならば、その図を figure
環境で囲むとfloat要素になります。 \includegraphics
マクロのオプション引数として使われている様々なオプションを特定するには #+ATTR_LaTeX:
を使います。
figure
環境のオプションの配置を変更するには、 ‘placement=[h!]’ のように属性に追加します。
画像のまわりに文字を回りこませたいのであれば、#+ATTR_LaTeX:
の行に ‘wrap’
を追加すると、画像がページの左半分にきます。微調整するには、wrapfigure
環境に引数として、 placement
フィールドを追加します。画像のサイズを変更する時は、互換性のある \includegraphics
と wrapfigure
を使わなければいけないので注意してください。
#+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}’ と記述してください。
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
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の文書を見てください。
Org-modeは、Baoqiu Cuiによって作成されたDocBookへのエクスポート機能があります。Org-modeのファイルはDocBookのフォーマットで出力され、さらにDocBookのツールやスタイルシートを使ってPDF、HTMLやmanなど他のフォーマットに出力することができます。
現在、DocBookのエクスポート機能はDocBook V5.0をサポートしています。
org-export-as-docbook
)EXPORT_FILE_NAME
属性がある場合は、その名前がエクスポートに使われます。 V
org-export-as-docbook-pdf-and-open
)
DocBookファイルが出力され、PDF処理を経て出力されたPDFファイルが開きます。
DovBookファイルにエクスポートしてPDFに出力するには、XSLT処理系とXSL-FO処理系を環境にインストールしておく必要があるので注意してください。変数
org-export-docbook-xslt-proc-command
と
org-export-docbook-xsl-fo-proc-command
を確認してください。
変数 org-export-docbook-xslt-proc-command
でスタイルシートを表わす引数 %s
はユーザーによってセットされる変数 org-export-docbook-xslt-stylesheet
の値で置き換えられます。Org-modeファイルに #+XSLT:
を追加することで、グローバルな設定を封じることができます。
次のようなブロックを使えば、Org-modeのファイルでDocBookのコードを引用したり、文章をそのままDocBookのファイルにコピーすることができます。
#+DOCBOOK: エクスポートするDocBookコードの文字列
#+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
DocBookのエクスポート機能は、DocBookの article
要素を使ってOrg-modeのファイルをarticlesとして出力します。再帰的なsections、例えば section
要素が出力されたarticlesの中で使われます。
Org-modeのファイルのトップレベルの見出しは、トップレベルのsectionsとして出力され、低いレベルの見出しはネストしたsectionsとして出力されます。Org-modeのファイルの全体構造は、完全に出力されます。見出しにネストされたレベルはどれだけあっても構いません。
再帰的なセクションを使えば、 出力されたDocBookコードを他の book
や set
のようなドキュメントタイプに移植したり、再利用したりするのが用意になります。
Org-modeの表はHTMLの表を出力します。HTMLの表はDocBook V4.3からサポートされています。
テーブルに表題がなかった場合、 informaltable
要素によってinformal
tableが出力されます。表題があれば、table
要素により、テーブルが出力されます。
‘[[file:img.jpg]]’ や ‘[[./img.jpg]]’ のように説明文にリンクされていない画像は、
mediaobject
タグが使われてDocBookに出力されます。 各 mediaobject
要素には、imagedata
要素を囲む
imageobject
要素が含まれます。もし、画像とテーブルで説明されているように図の表題を特定するならば、
caption
要素を mediaobject
の中に追加します。番号も特定する場合は、
mediaobject
要素の中に xml:id
属性が出力されます。figure
環境のオプションの配置を変更するには、 ‘placement=[h!]’ のように属性に追加します。
画像の属性には imagedata
要素がサポートされ、 align
や width
のような属性が二つの方法で特定されます。一つ目は変数
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がサポートしている画像のタイプを追加することができます。
\alpha
, \Gamma
, そして \Zeta
のような TeX
ライクなシンタックスで記述された特殊文字列は、DocBookのエクスポート機能でサポートされています。 そのような文字列は、変数
org-entities
に格納されているリストにもとづき、α
, Γ
, そして
Ζ
のように 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; ]> "
TaskJugglerはプロジェクト管理ツールです。 プロジェクトのアウトラインと設定して制限をもとにプロジェクトのタイムラインとリソースの割り当てを計算して最適化されたスケジュールを提供します。
TaskJugglerのエクスポート機能は、例えばHTMLやLaTeXのような他のエクスポート機能とは少し違い、ドキュメントのノード全てを出力しませんし、ドキュメントのノードの序列に従って出力することもしません。
代わりに、TaskJugglerのエクスポート機能はタスクが定義されているツリーか、このプロジェクトのリソースとして任意に定義されたツリーを探します。そして、それらツリーと全てのノードの中で定義された属性をもとにTaskJugglerファイルを作成します。
org-export-as-taskjuggler
)org-export-as-taskjuggler-and-open
)いつものように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でガントチャートが開くはずです。
次に特定のタスクにリソースを割り当てることができます。階層的にリソースをまとめることもできます。トップノードのタグは: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に出力してリソースの再配置グラフを確認することができます。そのグラフでは、各人がいつ何のタスクをこなしているかがわかります。
エクスポート機能はTODOの状態に関する情報も考慮されています。例えば、タスクが「DONE」とマークされると、それに対応して、TaskJugglerの属性も(‘complete 100’)となります。タスクリソースやタスクノード上のうTaskJugglerで使われる‘limits’, ‘vacation’, ‘shift’, ‘booking’, ‘efficiency’, ‘journalentry’, ‘rate’のようなリソースの属性や‘account’, ‘start’, ‘note’, ‘duration’, ‘end’, ‘journalentry’, ‘milestone’, ‘reference’, ‘responsible’, ‘scheduling’などのタスクの属性も、出力されます。
エクスポート機能はタスクで‘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:
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チュートリアルを見てください。
Freemindのエクスポート機能はLennart Borgmanによって作成されました。
org-export-as-freemind
)Org-modeにはXOXOスタイルで出力するエクスポート機能があります。現在、このエクスポート機能は一般的なアウトライン構造を扱うだけで、Org-modeの特徴を解釈しません。
org-export-as-xoxo
)
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はユニークな値となりますが、同期処理では全て異なるエントリーから作られたエントリーとみなされるでしょう。
org-export-icalendar-this-file
)org-export-icalendar-all-agenda-files
)org-agenda-files
で指定された全てのファイルで実行されます。それぞれのファイルでiCalendar形式のファイルが作成されます。
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ではこの問題についてカバーしています。
Org-modeは連結されたOrg-modeのファイルから成るprojectsの自動的なHTMLへの変換設定をあなたに許可します.あなたはまた,エクスポートしたHTMLページと画像やソースコードのような関係する添付ファイルの自動的なアップロードをOrg-modeに設定できます.
あなたはまた,Org-modeからPDFへ変換することもでき,さらに,サーバ上で両方のファイルを利用できるようにHTMLとPDFへの変換を組み合わせることも可能です.
公開はDavid O'TooleによってOrg-modeに寄与されました.
公開はファイルの指定,公開先,プロジェクトのその他多くのプロパティの重要な設定を必要とします.
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
プロパティの個々のメンバは異なる公開設定を持つファイルをまとめたサブプロジェクトとして扱われます.あなたが“メタプロジェクト”を公開する時,全てのコンポーネントは特定の順序で公開されます.
多くの<プロパティは任意に選択でき,しかし多くは常にセットされているべきです.特に,Org-modeはソースファイルをどこで探すか,またファイルの公開先を知る必要があります.
:base-directory
| 公開するソースファイルを含むディレクトリ
|
:publishing-directory
| アウトプットファイルのあるディレクトリは公開されます.あなたはEmacstrampパッケージの構文のファイル名を使ってウェブサーバに直接公開することができます.もしくは,ローカルディレクトリに公開したり,あなたのウェブサイト(see ファイルのアップロード)にアップロードするための拡張ツールを使うことができます.
|
:preparation-function
| 公開プロセスの開始前に呼ばれる関数または関数のリストです(例えば,公開のためのファイルの更新に使うmake を実行します).project-plist 変数であるプロジェクトのプロパティリストはこの呼び出しにスコープされます.
|
:completion-function
| 公開プロセスが完了した後に呼ばれる関数または関数のリストです(例えば,出力したファイルの権限を変更します).project-plist 変数であるプロジェクトのプロパティリストはこの呼び出しにスコープされます.
|
デフォルトでは,ベースディレクトリの中の拡張子が.orgである全てのファイルはプロジェクトの一部であるとみなされます.これはプロパティの設定により変更することができます:
:base-extension
| ソースファイルの拡張子(.を除きます!)です.これは実際は正規表現です.もしあなたが:base-directory の中の全てのファイルを取得したいのであれば,any シンボルをセットします.
|
:exclude
| そのファイルの拡張子が選択されていたとしても,公開したくないファイル名にマッチする正規表現.
|
:include
| :base-extension と:exclude にかかわらずインクルードするファイルのリスト.
|
:recursive
| nilでなければ,ベースディレクトリから再帰的に公開するファイルをチェックします.
|
公開は,ファイルを宛先ディレクトリにコピーし,場合によっては変換することです.デフォルトの変換は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
をセットします.これは公開ディレクトリ129にfile.orgとfile.org.htmlを作ります.画像のようなその他のファイル公開ディレクトリにコピーされる必要があります;
このために,あなたはorg-publish-attachment
を使うことができます.Org-modeでないファイルのために,あなたは常に公開用の関数を指定する必要があります:
:publishing-function
| ファイルの公開を実行する関数です.これは,順番に呼び出される関数のリストにすることもできます.
|
:plain-source
| nilでなければ,プレーンソースを公開します.
|
:htmlized-source
| nilでなければ,HTMLに変換されたソースを公開します.
|
関数には3つの引数を渡す必要があります:
最低でも:publishing-directory
プロパティを含むプロパティリスト,公開されるファイル名,出力ファイルの公開ディレクトリへのパスです.それは指定されたファイルを取り,(もしあれば)必要な変換を行い,出力をコピー先ディレクトリに置きます.
プロパティリストは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エクスポートでnil
とt
のそれぞれで:TeX-macros
と:LaTeX-fragments
オプションを除きHTMLとLaTeXエクスポート機能の両方で同じ効果を持ちます.このオプションのリストをチェックするにはorg-export-plist-vars
を見てください.
プロパティがorg-publish-project-alist
中の値で与えられた時,その設定は公開時に対応するユーザー変数を上書きします.オプションをファイル(see エクスポートオプション)内でセットしても,全て上書きされます.
ある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
があります.