Next: , Previous: , Up: Outlineモード   [Contents][Index]


26.9.2 アウトラインのフォーマット

Outlineモードは、バッファーの行には2つのタイプがあると仮定します。それはヘッダー行(heading lines)ボディー行(body lines)です。ヘッダー行はアウトラインのトピックを表します。ヘッダー行は1つ以上のアスタリスク文字(‘*’)で開始されます。アスタリスクの数はアウトライン構造でのヘッダーの深さを決定します。したがって1つの‘*’がついたトピックは、メジャーなトピックになります。このヘッダーと、次の‘*’が1つのヘッダーの間にある、‘*’が2つのヘッダー行は、そのヘッダーのサブトピックです。ヘッダー行ではないすべての行はボディー行です。ボディー行は、それの前にあるヘッダー行に属します。以下は例です:

* Food
This is the body,
which says something about the topic of food.

** Delicious Food
This is the body of the second-level header.

** Distasteful Food
This could have
a body too, with
several lines.

*** Dormitory Food

* Shelter
Another first-level topic with its header line.

ヘッダー行とそれに属するすべてのボディー行を合わせて、エントリー(entry)と呼びます。ヘッダー行と、その配下にあるすべてのヘッダー行、それらすべてのボディー行を、サブツリー(subtree)と呼びます。

ヘッダー行と判別する条件は、変数outline-regexpをセットすることによりカスタマイズできます(これを行う推奨された方法は、メジャーモードの関数を使うか、ファイルローカル変数を使う方法です)。行の開始がこのregexpにマッチする行は、ヘッダー行と判断されます。(行の左端ではなく)行の途中でのマッチは勘定に入りません。

テキストにたいするマッチの長さは、ヘッダーのレベルを決定します。長いマッチは、より深くネストされたレベルとなります。‘@chapter’、‘@section’、‘@subsection’というコマンドが、ドキュメントをチャプター、セクション、サブセクションに分割するようなテキストフォーマッターがある場合(訳注: texinfo形式のこと)、outline-regexpに‘"@chap\\|@\\(sub\\)*section"’をセットすることにより、それらの行をヘッダー行と判断させることができます。ここでトリックに注意してください。2つの単語‘chapter’と‘section’は同じ長さです。しかしregexp‘chap’だけにマッチするように定義することによって、チャプターのヘッダーにマッチするテキストの長さを短くすることができるので、Outlineモードはセクションがチャプターの配下であることを知ることができます。これは‘@chap’で始まるコマンドが他にない場合に限り機能します。

変数outline-levelをセットすることにより、ヘッダー行のレベルを計算するためのルールを明示できに指定できます。outline-levelの値には、引数をとらないカレントヘッダーのレベルを返す関数を指定します。この変数をセットする推奨された方法は、メジャーモードのコマンドを使うか、ファイルローカル変数を使用する方法です。