[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

2. 熟練者のためのInfo

この章では,熟練者のための様々なInfoコマンドを記述しています.(スタンド アローンのInfoリーダを使用している場合,それ特有の追加コマンドがあり,そ れらは(info-stnd)Top section ‘GNU Info’ in GNU Infoのいくつかの章で説明され ています.)

この章では,Texinfoファイルとは異なるInfoの書き方を記述しています.(しか し,Infoファイルを生成するだけでなく,印刷されたマニュアルを作成したり, HTMLやDocBookのようなそれ以外の書式を生成したりすることが可能なので,ほ とんどの状況ではTexinfoファイルを書く方がいいでしょう.)See (texinfo)Top section ‘Overview of Texinfo’ in Texinfo: The GNU Documentation Format.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

2.1 高度なInfoコマンド

より容易に動き回るれるようになる,より多くのInfoコマンドには以下のものが あります.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

gで指名したノードに移動する

ノードの名前を知っている場合,g,名前,<RET>と入力することでそ こに移動することが可能です.このため,gTop<RET>でこのファイル の‘Top’と呼ばれるノードへ移動します.(これはtと同じです. 中級Infoコマンドを参照してください.)gAdvanced<RET>でここへ戻っ てきます.EmacsではgでコマンドInfo-goto-nodeを実行します.

mとは異なり,gでは省略を使用できません.しかし,補完は可能な ので,<TAB>を入力して部分的なノード名を完全なものにすることが可能で す.

他のファイルのノードへ移動するため,ノード名の前に,カッコ内にファイル名 を含めることが可能です.このため,g(dir)Top<RET>でInfoディレク トリノードへ移動し,それはファイル‘dir’の‘Top’ノードです.同様 に,g(emacs)Top<RET>でEmacsのマニュアルのトップノードに移動し ます.

ノード名‘*’はファイル全体を指定します.そのため,g*<RET> と入力することで現在のファイルの全てを見たり,g(FILENAME)<RET> で他のファイルの全てを見ることが可能です.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

19でメニューのサブトピックを選択する

システムが要求するそれぞれの入力文字がいやな場合,コマンド1234,…9の使用を好むかもしれません.そ れらは,引数と供に使用されているmコマンドの短いものです.1は 現在のノードメニューの最初のものに行きます.2は二番目の項目に行く 等となっています.スタンドアローンのInfoリーダでは0で最後のメニュー 項目まで移動します.これで,存在するたくさんの項目を数える必要が無くなり ます.Enacsでは数字のキーはコマンドInfo-nth-menu-itemを実行します.

画面が複数のフォントをサポートしていて,EmacsのInfoモードをInfoファイル を読むために使用している場合,五番目のメニュー項目に対する‘*’が目立 つように,色が付いていたり,下線が引かれていたりするような他の属性があり, 九番目の項目も同様になっています.これで,項目に対して使用されている番号 をひと目で見ることが容易になります.

端末によっては,色も下線もサポートしていません.実際に項目を数える必要が ある場合,その代わりにmを使用して名前を指定したり,メニュー間を素 早く移動するために<TAB>を使用した方が良いでしょう.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

eでInfoドキュメントを編集可能にする

Infoコマンドeで,Infoモードから普通のEmacs編集モードに変更し,それ で現在のノードのテキストを編集することが可能になります.Infoに切替えるた め,C-c C-cと入力してください.eコマンドは,変数 Info-enable-editnilでない場合のみ利用可能です.

eコマンドはEmacsでのみ動作し,そこではコマンドInfo-editを実 行します.スタンドアローンのInfoリーダではInfoファイルを編集可能にするこ とはできないので,eを入力するとノードの終りに移動します.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

2.2 指定した主題が述べてあるInfoドキュメントを探す

内部のノード間を移動するコマンドで,マニュアル全体や大きな部分を読むこと が可能になります.しかし,マニュアルの情報をできるだけ早く見つける必要が あり,それを探すノードは何かを知らない場合はどうでしょう?これは,マニュ アルをリファレンス(reference)として利用していたり,プログラムの使 用を開始する前にマニュアル全体を読むのが非現実的な場合に生じます.

Infoには,素早く検索するための強力な検索機能があります.マニュアルの索引 やそのテキストを検索することが可能です.

マニュアルで記述されているものに関連しているほとんどの主題は索引にされて いるので,最初に索引を検索すべきでしょう.iコマンドで,主題を入力 するように促され,索引で主題を検索します.入力した主題の索引項目が見つか る場合,索引項目が指し示しているノードに移動します.探している問題がそこ に記述されているかどうかを調べるためノードを見るべきでしょう.そうでなけ れば,主題に一致している追加の索引項目に移動するため,,を一回以上 入力してください.

iコマンドでは,文字列の一部として入力した文字列が含まれるす べての索引項目が見つかります.一致するたびに,Infoは見つかった索引項目の 全体をエコーエリアに表示します.索引項目全体のテキストで探しているものに 関連しているかどうかを決定するのに十分な情報が得られることも多いので,そ のノードを表示してみる前に,Emacsがエコーエリアに表示したものを読むこと を我々は推奨します.

iは文字列の一部から検索するので,索引でどのように綴られているかが 不確かな場合でも主題を検索することが可能です.例えば,入力の一部を補完 (complete)する(例えば,<TAB>を入力するとき)コマンドに適切なものを探 したいと仮定します.“complete”,“completion”,そして“completing”に ついて記述している索引を得たい場合,icomplet<RET>と入力するこ とが可能でしょう.

プログラムを説明しているInfoドキュメントでは,プログラムが提供しているコ マンド,オプション,そしてキーの組み合わせが索引にあるでしょう.コマンド, オプション,またはキーの記述を探している場合,iでトピックの入力を 促されているとき,その名前を入力してください.例えば,C-fキーが行 なうことの記述を読みたい場合,iC-f<RET>を入力してください.こ こで,C-fは三つのリテラル文字‘C’,‘-’,そして‘f’の ことで,C-fに割り当てられているコマンドを実行するためにEmacs内部で 入力する“Control-f”のコマンドキーではありません.

Emacsでは,iでコマンドInfo-indexを実行します.

sコマンドで,ファイル全体から文字列を検索することが可能になります. それは,必要場合は次のノードに切り替えます.sに続き探す文字列を入 力し,<RET>で終了します.同じ文字列を再度検索するため,sに続け て<RET>を入力します.ファイルのノードはファイルにある順番で探され, それは,メニューのツリー構造と‘next’ポインタの順番に関連している必 要はありません.しかし通常は,二つの順番はそんなに異なりません.あらゆる 状況で,ヘッダが見えない場合(sでカーソルを文字があるところに移動し ても,そこはノードの最初ではないので,これは生じます),到着したノードを 判定するためbを実行することが可能です.

Emacsでは,Meta-ssと同じです.これは検索コマンドとして M-sを使用している,他のGNUパッケージとの互換性のためです.sM-sはどちらもEmacsでコマンドInfo-searchを実行します.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

2.3 Infoに新しいノードを追加する

新しいトピックをInfoディレクトリのリストに追加するため,以下のようにする 必要があります.

  1. そのトピックをドキュメントにするため,いくつかのファイルで,いくつかのノー ドを作成してください.
  2. ディレクトリのメニューにそのトピックを書いてください.See section Menu.

通常,ノードを作る方法としてTexinfoを用います(see (texinfo-ja)Top section ‘Overview of Texinfo’ in Texinfo).これには,印刷されたマニュアルやHTMLを作 成することもできるという利点もあります.‘@dircategory’と ‘@direntry’コマンドを,Infoディレクトリにマニュアルを配置するため に使用することもできるでしょう.しかし,Infoファイルを手動で編集し手動で インストールしたい場合,以下の方法があります.

新しいノードを,既存のドキュメントファイルや,新しいものに書き込むことが 可能です.それは,その前に‘^_’文字が存在し(ユーザは見えません.この ノードはに一つありますが,あなたは見ることができません),それは, ‘^_’,‘^L’(“フォームフィード”),またはファイルの終りのいずれ かで終了する必要があります.(2)

ノードを開始する‘^_’には,改行または‘^L’と改行を続ける必要があ り,その後にノードのヘッダ行を続けます.ヘッダ行には(Infoで見つかるよう に)ノード名を与える必要があり,‘Next’,‘Previous’,そして ‘Up’ノード(存在する場合は全て)をの名前を述べる必要があります.御覧 のように,このノードの‘Up’ノードはノード‘Expert Info’です. ‘Next’ノードは‘Menus’です.

キーワードNodeNextPrevious,そしてUpは,任意 の順番で,ヘッダ行のどこにでも書いてもかまいませんが,推奨される順番はこ の文のものです.それぞれのキーワードには,コロン,スペース,そしてタブを 続け,その後に適切な名前を続ける必要があります.名前はタブ,カンマ,また は改行で終了してもかまいません.スペースでは終了しません.ノード名にはス ペースを含めてもかまいません.名前の大文字小文字の違いは重要ではありませ ん.

ノード名には二つの形式が有ります.現在のファイルのノードは,ノードの最初 の行の‘Node: ’後に現われるもので命名されています.例えば,このノー ドの名前は‘Add’です.他のファイルのノードは,このノードの ‘(info-ja)Add’の様に,‘(filename)node-within-file’ で命名されています.ファイル名が“./”で始まる場合,それは現在のディレク トリと相対的になります.それ以外の場合,それはあなたのサイトの標準的な Info ディレクトリから開始して相対的なものになります.名前 ‘(filename)Top’は,‘(filename)’で省略することが可 能です.慣習で,名前‘Top’は,単一ファイルでの“最上位の”ノードに使 用されます — その‘Up’ノードはファイルの外部を指し示します. ‘Directory’ノードは‘(dir)’で,それはサイトにインストールされて いるすべてのInfoドキュメントをリストしている大きなメニューを保持している ファイル‘dir’を指し示します.‘Directory’でリストアップされてい るドキュメントファイルの‘Top’ノードには,その中に‘Up: (dir)’ が有るでしょう.

ノード名*は特別です.それはファイル全体を参照します.そのため, g*は現在のファイル全体を表示します.ノード*を使用することで, ファイルをツリーのノードに組織化しない,時代遅れの形式にすることを可能に します.

ノード自身の名前を述べる‘Node:’の名前には,Infoがノードを探すとき, ファイル名が存在することを予期していないので,ファイル名を含めてはいけま せん.‘Next’,‘Previous’,そして‘Up’の名前ではそれらを含 めてもかまいません.このノードで,‘Up’ノードは同じファイルに有るの で,それを使用する必要は有りません.

このファイルのノードには,ヘッダ行にファイル名があることに注意してくださ い.ファイル名はInfoで無視されますが,それらは,ユーザがノードを識別する 助けとなるコメントとして提供されています.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

2.4 メニューの作成方法

Info階層のすべてのノードには,メニュー(menu)を持たせてもかまいませ ん — それはサブノードのリストです.mコマンドで,端末から読み込ま れたトピックに対して現在のノードのメニューを検索します.

メニューは‘* Menu:’で始まる行で開始します.行の残りはコメントです. 行の先頭から‘* ’で始まる全ての行は,単一のトピックをリストアップし ます.トピックの名前 — このトピックを選択するため,ユーザがmコマ ンドに与える必要がある引数 — は,星型(アスタリスク)とスペースの直後に あり,コロン,スペース,そしてタブが続き,そしてそのトピックを述べている ノード名が続きます.‘Next’,‘Previous’,そして‘Up’が続く ノード名に似ているノード名は,タブ,カンマ,または改行で終端してもかまい ません.それは,ピリオドで終端してもかまいません.

ノード名とトピック名が同じ場合,二度名前を与える代わりに,省略の‘* name::’を使用してもかまいません(そして,それがメニューが乱雑になる のを抑えるので,可能なときはいつでもそれを使用すべきです).

トピック名の先頭付近がお互いに異なるようにトピック名を選択することは思慮 深いことです — これで,ユーザは短い省略の入力が可能になります.長いメ ニューでは,最小限受容できる省略となる,それぞれの項目名の初めを大文字化 することは良い考えです(長いメニューとは,五つ以上の項目のものです).

ノードのメニューでリストアップされているノードは,(メニューのあるノード) の“サブノード”と呼ばれ,(メニューのあるノード自身は)それら(サブノード) の“上位”になります.(サブノードは)それぞれ,上位への‘Up:’を示すも のがあるべきです.(サブメニューの)全てを見たい人が,メニューに何度も訪れ る必要がないように,全てまたはほとんどのサブノードが‘Next’と ‘Previous’ポインタで並ぶように整列すると役に立つことも多いでしょう.

Infoディレクトリは,ノード‘(dir)Top’の単純なメニューです — すなわ ち,ファイル‘.../info/dir’のノード‘Top’です.その他のあらゆる メニューと全く同じようなメニューに,新しい項目を書くことが可能です.Info ディレクトリは,‘info’と呼ばれるファイルディレクトリと同じでは ありません.Infoのファイルの多くは,そのファイルディレクトリに存 在しますが,必須ではないこともあります.そして,そのディレクトリのファイ ルがInfoディレクトリのノードに自動的にリストアップされないこともあります.

また,Infoノードグラフは,“階層的”だと主張されていますが,実際それは 任意の方向に向いたグラフにもなり得ます.共有されている構造とポイ ンタサイクルは完全に利用可能になっていて,表現の意味として適切な場合はそ れらが使用可能です.ファイルの全てのノードが,連結されている構造となる形 式にする必要はありません.実際このファイルには,二つの連結されているコン ポーネントがあります.あなたはその中の一つにいて,それはノード‘Top’ の下にあります.それ以外はhコマンドで行くノード‘Help’を含んで います.実際,ガベージコレクト機能がないので,サブ構造を示さなくても困っ た問題はありませんが,しかしこのようなサブ構造は,今まで誰もその存在を見 つけることができないので,どちらかと言うと無用です.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

2.5 相互参照を作成する

相互参照は,行の先頭に書かれている必要があるメニュー項目と異なり,テキス トのどこにでも書くことが可能です.相互参照は,*の代わりに ‘*note’があること以外,メニュー項目のように見えます.それは, ‘)’がノード名の一部にあることも多いので,‘)’で終端することは できません.括弧で相互参照を囲みたい場合,ピリオドを最初に用いて 終端してください.相互参照ポインタの二つの例は以下のようになります.

 
*Note details: commands.  (See *note 3: Full Proof.)

これらは単なる例です.それが“導く”場所は実際には存在しません!


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

2.5.1 Infoの相互参照で到着するノード

これは,‘Cross’と命名されている相互参照で到着するノードです.

このノードは,相互参照で到着することを目的とした特殊なもので,ほとんどの 相互参照は,Infoドキュメントの構造のどこか遠くに“属している”場所があり ます.そのため,このノードに来たところへ戻るための‘Next’, ‘Previous’,または‘Up’ へのリンクがあることを期待することはで きません.一般的に,l (el)コマンドがそこへ戻る唯一の方法です.

 
>> 相互参照でやってきたノードに戻るためにlを入力してください.

[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

2.6 Infoを終了する

Infoから出てこれまでしていたことに戻るため,終了(Quit)するために qを入力してください.これはEmacsでInfo-exitを実行します.

これがInfoの使用上の基本コースの最後です.Infoドキュメントでの移動方法と, メニューや相互参照をたどる方法を既に学んできました.これで,新しいパッケー ジを学ぶときに新しいユーザが行なう,マニュアルの最初から最後まで読む準備 ができています.

それ以外のInfoコマンドは,マニュアルで何かを素早く探すときに役に立ちます — すなわち,マニュアルをチュートリアルとしてではなくリファレンスとして 使用する必要があるときです.検索コマンドも同じように学んで欲しいと思いま す.今そうしたい場合,この相互参照指定した主題が述べてあるInfoドキュメントを探すをたどってください.

更にもう一つのコマンドの組は,熟練ユーザに対して意味があります.Infoのド キュメントのディレクトリノードを探すと見つかるはずです.それらを見つける ことは,通常の方法でInfoを使用するための良い練習になるでしょう.

 
>> Infoディレクトリノードに移動するためにdを入力してください.そし
   て,Infoのノードと利用可能なそれ以外のヘルプを見るために,mInfo
   とリターンを入力してください.

[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

2.7 Infoファイルのタグ表

大きなInfoファイルにタグ表を与えることで,ノードへのアクセスを速くするこ とが可能です.プログラムのタグ表と異なり,Infoファイルのタグ表はファイル 自身に存在し,Infoがファイルを読み込むときはいつでも自動的に使用されます.

タグ表を作成するため,Emacs Infoモードを使用しているファイルのノードへ行 き,M-x Info-tagifyを入力してください.ファイルを保存するため, C-x C-sを使用する必要があります.Texinfoパッケージの一部の makeinfoコマンドで生成されたInfoファイルは,常に最初にタグ表があ ります.

一度Infoファイルにタグ表を持たせると,それが最新であることを確かめる必要 があります.(Texinfoソースを編集するのではなく)Infoファイルを直接編集し, テキストが削除される結果として,タグ表が記録している位置からノードがファ イルの中で千文字以上移動される場合,Infoはもはやそのノードを見つけること ができないでしょう.タグ表を更新するため,再びInfo-tagify コマン ドを使用してください.

Infoファイルのタグ表はファイルの終わりにあり,以下のようになっています.

 
^_^L
Tag Table:
File: info, Node: Cross-refs^?21419
File: info,  Node: Tags^?22145
^_
End Tag Table

ノードごとに一行を含んでいて,この行が,(ノード名の直後で終る)ノードヘッ ダの初めの部分,‘DEL’文字,そしてファイル内でのノードを開始する文字 の位置を含んでいることに注意してください.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

2.8 Infoファイルの調査

Infoファイルを作成するとき,他のノードからのポインタを作成しているときに ノード名を簡単に忘れてしまうものです.ノードに対して間違った名前を書いた 場合,誰かがInfoを使用してポインタへの移動を試みるまで発見されません. Infoファイルの照合は,すべてのノードへのポインタを調査して,無効なポイン タを報告する自動的な処理です.すべての‘Next’,‘Previous’,そし て‘Up’は,すべてのメニュー項目とすべての相互参照として調査されます. 更に,‘Previous’を示すものを持たない‘Next’すべてが報告されます. 他のファイルへのポインタの調査は大変遅いので,ファイル内の中のポインタの み調査されます.しかし,それらは通常ほとんどありません.

Infoファイルを調査するため,ファイルのノードを見ている間に,Emacs Info モードでM-x Info-validateをしてください.


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

2.9 EmacsのInfoモードの照合

以下の変数で,EmacsでのInfoモードの動作を修正してもかまいません.一つま たは複数のこれらの値を,対話的に,または‘~/.emacs’初期化ファイルで 設定してもかまいません.See Examining and Setting Variables: (emacs)Examining section ‘Examining and Setting Variables’ in The GNU Emacs Manual. スタンドアローンのInfoリーダプログラムには,(info-stnd)Variables section ‘Manipulating Variables’ in GNU Infoに記述されている独自の変数セッ トがあります.

Info-directory-list

Infoファイルを探すディレクトリリストです.それぞれの項目は文字列(ディレ クトリ名)またはnil(デフォルトディレクトリを試します)です.初期化 されていない場合は,それを初期化するためにInfoはユーザ変数INFOPATH を使用し,環境変数INFOPATHが無い場合は, Info-default-directory-listを使用します.

EmacsのInfoモードとスタンドアローンのInfoで,Infoが検索するディレクトリ のリストをカスタマイズしたい場合,両方のプログラムに適用される INFOPATH環境変数を設定するのが最も良い方法です.

Info-additional-directory-list

Infoドキュメントファイルを検索する追加のディレクトリリストです.これらの ディレクトリは,‘dir’ファイルにマージするために検索されません.

Info-fontify

nilではない値に設定されるとき,Infoファイルの強調が利用可能です. デフォルトはtです.info-nodeinfo-xrefinfo-header-xrefinfo-header-nodeinfo-menu-5info-menu-header,そしてinfo-title-n-face(nは セクションレベルで,1から4の間の数です)の概観をカスタマイズすることで, 強調の見え方を変更することが可能です.概観をカスタマイズするため, M-x customize-face <RET> face <RET>と入力して, faceはここでリストアップされているものの一つにしてください.

Info-use-header-line

nilでない場合,EmacsはInfoバッファのヘッダ行表示に‘Next’, ‘Prev’,そして‘Up’のリンクを書き込みます.ヘッダ行はバッファに 留まっていて,スクロールされず,これらのリンクは常に見えている状態になり ます.

Info-scroll-prefer-subnodes

nilでない値に設定されている場合,メニューでの<SPC>と <BACKSPACE>(または<DEL>)キーで,キーに対応して最後や最初にスクロー ルする前に,現在のノードのサブノードに移動します.例えば,画面にノードの メニューがある場合,次の<SPC>で次のメニュー項目で示されているサブノー ドに移動します.このオプションをnilに設定することで,スタンドアロー ンのInfoリーダに似た動作になり,現在のノードの終りで入力したときだけ,最 初のサブノードに移動します.デフォルトはtです.

Info-enable-active-nodes

nilでない値が設定されているとき,ノードに関連付けされたLispコード をInfoが実行すること可能にします.Lispコードはノードが選択されたとき実行 されます.実行されるLispコードにはノードデリミタ(‘DEL’文字)と以下の ような‘execute: ’タグを続けるべきです.

 
^_execute: (message "This is an active node!")
Info-enable-edit

nilに設定し,‘e’(Info-edit)コマンドを利用不可にします. nilでない値では,それが可能です.See section Edit.


[ << ] [ >> ]           [冒頭] [目次] [見出し] [ ? ]

この文書は新堂 安孝によって2009年9月22日texi2html 1.82を用いて生成されました。